urllib3与早前版本稍有差异,记录下几个调整的版本(目前只有版本一,关于bug的改进版本后续再贴,有热心的小伙伴也可以提提建议~)
版本一
刚入门,在网上搜刮了一些代码,又调整了一下,可以将百度图片根据某关键字搜到的结果下载到本地,但版本一这段代码会出现如下从错误
下载损害的图片,无法打开
程序卡在某个图片的URL
重复url下载
import re
import urllib3
def getHtml(url):
http = urllib3.PoolManager()
r = http.request('GET', url)
htmlStr=r.data.decode('utf-8')
print(htmlStr)
return htmlStr
def getImg(htmlStr):
reg = r':"(http://[^"]+\.(?:jpg|png|gif))"?'
imgre = re.compile(reg)
imglist = imgre.findall(htmlStr)
saveImage(imglist,'/home/yijie/PycharmProjects/osm/gouwuzhongxin')
def saveImage(imglist,name):
number = 1
http = urllib3.PoolManager()
for imageURL in imglist:
print(imageURL)
splitPath = imageURL.split('.')
fileExt = splitPath.pop()
fileName = name + "/" + str(number) + "." + fileExt #name是存储图片的路径,number作为图片名
# 下载单个imageURL的图片
r = http.request('GET', imageURL)
data = r.data
f = open(fileName, 'wb+')
f.write(data)
print(u'正在保存的一张图片为:%s', fileName)
f.close()
number += 1
print('\ntotal number of image:%s',(name,number))
if __name__=='__main__':
s=r'http://image.baidu.com/search/index?ct=201326592&z=0&s=0&tn=baiduimage&ipn=r&word=%E8%B4%AD%E7%89%A9%E4%B8%AD%E5%BF%83%E5%B9%B3%E9%9D%A2%E5%9B%BE&pn=0&istype=2&ie=utf-8&oe=utf-8&cl=2&lm=7&st=-1&fr=&fmq=1508290519080_R&ic=0&se=&sme=&width=0&height=0&face=0'
html = getHtml(s)
getImg(html)