首页 新闻 会员 周边 捐助

爬虫——爬取到图片链接但下载到本地失败

0
[已解决问题] 解决于 2017-07-22 18:40
#encoding:utf-8
import urllib2
import re
#获取网页内容
def getHtml(url):
    req=urllib2.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0')
    html=urllib2.urlopen(req)
    html=html.read()
    return html
#获取图片链接
def get_photo(html):
    respon=re.compile(r'src="(.*?)"',re.S)
    photo_link=re.findall(respon,html)
    temp=0
    for link in photo_link:
        if '.png' in link:
            print link
            temp+=1
            filename='%s.png'%temp
            print filename
            download_img(link,filename)
#下载图片链接到本地
def download_img(link,filename):
    link_req=urllib2.Request(link)
    opener=urllib2.build_opener()
    img_resp=opener.open(link_req)
    try:
        fp=open(filename,'wb')
        fp.write(img_resp.read())
        fp.flush()
        fp.close()
    except:
        print 'It is error'


url='http://gl.sanguosha.com/'
html=getHtml(url)
get_photo(html)
问题补充:

下载失败报错的原因是:urllib2.URLError: <urlopen error [Errno 11004] getaddrinfo failed>

wgq0_0的主页 wgq0_0 | 初学一级 | 园豆:186
提问于:2017-07-21 21:58
< >
分享
最佳答案
0

在 link_req=urllib2.Request(link) 这句前面加一句: 

link = link.replace("\\", '/'),
 
原因在于这网站部分图片url含有反斜线(\),需替换成正斜线(/),比如这种url:
http://gl.sanguosha.com\uploads\4/583d3755d87be.png
奖励园豆:5
学数学的程序猿 | 菜鸟二级 |园豆:252 | 2017-07-21 23:48

是的,确实是这样。真心感谢~!~!!

wgq0_0 | 园豆:186 (初学一级) | 2017-07-22 18:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册