找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 188|回复: 12

[求助] 输入代码错误,请指教,谢谢!

6

主题

13

帖子

13

积分

贫民

积分
13
gwz203 发表于 2020-9-5 14:44:53 | 显示全部楼层 |阅读模式
#coding = utf-8
import urllib
import re

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):
    reg = 'src="(.+?\.jpg)" alt='
    imgre = re.compile(reg)
    imglist = re.findall(imgre, html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl, '%s.jpg' % x)
        x+=1
    return imglist

html = getHtml("http://pic.yxdown.com/list/0_0_1.html")

print getImg(html)

继续请教,请高手指点,这段代码提示错误?为什么?在哪里?谢谢!

回复

使用道具 举报

0

主题

709

帖子

709

积分

圣骑士

积分
709
sheeboard 发表于 2020-9-7 10:46:43 | 显示全部楼层
用python3吧,你这个是python2的代码,像urllib可以用requests代替,如果是抓取js页面可以用selenium,就是慢点。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
con1001 发表于 2020-9-8 14:00:06 | 显示全部楼层
你缺少请求头,需要再定义一个headers,在getHtml里面需要一个包含地址和请求头的对象。你才能拿到html内容。
回复 支持 反对

使用道具 举报

6

主题

13

帖子

13

积分

贫民

积分
13
gwz203  楼主| 发表于 2020-9-8 14:19:08 | 显示全部楼层
不好意思,能不能费时将此代码改为oython3,并注释改动处。慢一点五所谓啊,让我好好学习一下啊。谢谢了。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
con1001 发表于 2020-9-8 14:43:18 | 显示全部楼层
拿到内容才能,对内容进行提取。
回复 支持 反对

使用道具 举报

6

主题

13

帖子

13

积分

贫民

积分
13
gwz203  楼主| 发表于 2020-9-8 16:12:17 | 显示全部楼层
不明白答复什么意思?请明示,谢谢
回复 支持 反对

使用道具 举报

6

主题

13

帖子

13

积分

贫民

积分
13
gwz203  楼主| 发表于 2020-9-8 16:21:28 | 显示全部楼层
又一段学习代码,运行又卡住了,唉,再一次请教。
import urllib.request
import re
import os
import urllib
#根据给定的网址来获取网页详细信息,得到的html就是网页的源代码
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    return html.decode('UTF-8')

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = imgre.findall(html)#表示在整个网页中过滤出所有图片的地址,放在imglist中
    x = 0
    path = 'D:\\test'
    # 将图片保存到D:\\test文件夹中,如果没有test文件夹则创建
if not os.path.isdir(path):
    os.makedirs(path)
    paths = path+'\\' #保存在test路径下

for imgurl in imglist:
    urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x)) #打开imglist中保存的图片网址,并下载图片保存在本地,format格式化字符串
    x = x + 1
    return imglist
    html = getHtml("http://tieba.baidu.com/p/2460150866")#获取该网址网页详细信息,得到的html就是网页的源代码
    print (getImg(html)) #从网页源代码中分析并下载保存图片
回复 支持 反对

使用道具 举报

0

主题

709

帖子

709

积分

圣骑士

积分
709
sheeboard 发表于 2020-9-8 21:22:29 | 显示全部楼层
本帖最后由 sheeboard 于 2020-9-8 21:24 编辑

贴一下详细的错误信息,方便别人帮你看错在哪里,还有百度,谷歌这类网站有反爬手段,不写包头不会返回200 ok的。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
con1001 发表于 2020-9-8 21:51:42 | 显示全部楼层
import re
from urllib import request

target_url = "http://pic.yxdown.com/list/0_0_1.html"
request_headers = {'User-Agent' : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}

def request_target():
    request_html = request.Request(url=target_url,headers=request_headers)
    read_request = request.urlopen(request_html)
    return read_request.read().decode("utf-8")

def analyse_page(html):
    get_content = re.compile('.*? <div class="conbox">.*? <div class="cbmiddle">.*?<img src="(.*?)"',re.S)
    read_list = get_content.findall(html)
    print(read_list)
    for read in read_list:
        print("地址列表:",read.strip())

read_target = request_target()
print(read_target)
analyse_page(read_target)
这个是拿到图片地址的代码。你在for这些代码下载地址的就行了
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
con1001 发表于 2020-9-8 22:09:48 | 显示全部楼层
import re
from urllib import request

target_url = "http://pic.yxdown.com/list/0_0_1.html"
request_headers = {'User-Agent' : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}

def request_target():
    request_html = request.Request(url=target_url,headers=request_headers)
    read_request = request.urlopen(request_html)
    return read_request.read().decode("utf-8")

def analyse_page(html):
    get_content = re.compile('.*? <div class="conbox">.*? <div class="cbmiddle">.*?<img src="(.*?)"',re.S)
    read_list = get_content.findall(html)
    print(read_list)
    for read in read_list:
        print("地址列表:",read.strip())

read_target = request_target()
print(read_target)
analyse_page(read_target)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表