Python爬虫求助
在小甲鱼的ooxx那一课,为什么我的程序会报这个错误import urllib.request
import os
def url_open(url):
req=urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36')
response=urllib.request.urlopen(url)
html=response.read()
return html
def get_page(url):
html=url_open(url).decode('utf-8')
a=html.find('current-comment-page')+23
b=html.find(']',a)
return html
def find_imgs(url):
html=url_open(url).decode('utf-8')
img_addrs=[]
a=html.find('img src=')
while a!=-1:
b=html.find('.jpg',a,a+255)
if b!=-1:
img_addrs.append(html)
else:
b=a+9
a=html.find('img src=',b)
return img_addrs
def save_imgs(folder,img_addrs):
for each in img_addrs:
filename=each.split('/')[-1]
with open(filename,'wb') as f:
img=url_open(each)
f.write(img)
def download_mm(folder='OOXX',pages=10):
os.mkdir(folder)
os.chdir(folder)
url=r'http://jandan.net/ooxx/'
page_num=int(get_page(url))
for i in range(pages):
page_num-=i
page_url=url+'page-'+str(page_num)+'#comments'
img_addrs=find_imgs(page_url)
save_imgs(folder,img_addrs)
if __name__=='__main__':
download_mm()Traceback (most recent call last):
File "E:/小甲鱼—《零基础入门学习Python》/056轮一只爬虫的自我修养4:OOXX/1.爬图片.py", line 49, in <module>
download_mm()
File "E:/小甲鱼—《零基础入门学习Python》/056轮一只爬虫的自我修养4:OOXX/1.爬图片.py", line 46, in download_mm
save_imgs(folder,img_addrs)
File "E:/小甲鱼—《零基础入门学习Python》/056轮一只爬虫的自我修养4:OOXX/1.爬图片.py", line 34, in save_imgs
img=url_open(each)
File "E:/小甲鱼—《零基础入门学习Python》/056轮一只爬虫的自我修养4:OOXX/1.爬图片.py", line 5, in url_open
req=urllib.request.Request(url)
File "E:\python\lib\urllib\request.py", line 329, in __init__
self.full_url = url
File "E:\python\lib\urllib\request.py", line 355, in full_url
self._parse()
File "E:\python\lib\urllib\request.py", line 384, in _parse
raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: '//wx1.sinaimg.cn/mw600/66b3de17gy1ffxkfmik4lj20dw0jpwgz.jpg' wx1.sinaimg.cn/mw600/66b3de17gy1ffxkfmik4lj20dw0jpwgz.jpg这个图片是可以打开的,
在第24行代码改成img_addrs.append('http://'+html)
提示:你把wx1.sinaimg.cn/mw600/66b3de17gy1ffxkfmik4lj20dw0jpwgz.jpg复制粘帖到浏览器打开,然后再复制粘帖出来,你会发现多了个'http://',然后你懂的{:10_256:} 有必要 @小甲鱼
这一课的教程是不是有问题,为什么每个新手在这一课都要问一次这个问题呢?
Aifrincoo 发表于 2017-5-25 18:48
wx1.sinaimg.cn/mw600/66b3de17gy1ffxkfmik4lj20dw0jpwgz.jpg这个图片是可以打开的,
在第24行代码改成img ...
谢谢,能爬下几张图了,就是中途还会报错 中途会出错啊 怎么解决啊
夜枭1107 发表于 2017-5-27 14:52
谢谢,能爬下几张图了,就是中途还会报错
可能要挂上代理,没挂代理可能会这样,我运行了我以前保存的代码,也是一样的错误 Aifrincoo 发表于 2017-5-27 16:22
可能要挂上代理,没挂代理可能会这样,我运行了我以前保存的代码,也是一样的错误
可是小甲鱼后面用代理不也是出错了
你在31行至32行中间加一段print(each),我这里停下来的原因是碰到了http://tp://s.jandan.com/static/gg/lanya2.jpg这一行,把s.jandan.com/static/gg/lanya2.jpg放到浏览器里你会发现是广告,可能以前没有,现在突然有了。 cshiao 发表于 2017-5-27 19:08
可是小甲鱼后面用代理不也是出错了
也许这就是我保存的代码突然会出现你那种错误的原因吧 Aifrincoo 发表于 2017-5-27 19:55
你在31行至32行中间加一段print(each),我这里停下来的原因是碰到了http://tp://s.jandan.com/static/gg/lan ...
对,就是这个,哪有没有啥解决的方法? cshiao 发表于 2017-5-29 12:49
对,就是这个,哪有没有啥解决的方法?
一个笨方法,每次爬取的地址你都看看是否是tp://s.jandan.com/static/gg/lanya2.jpg
如果是那么就不加入图片地址(就是你的24行)
每次执行加入图片地址(24行代码)之前用
if html != 'tp://s.jandan.com/static/gg/lanya2.jpg':
img_addrs.append(html)
好的,谢谢,我去试试
页:
[1]