python3 urllib3批量下载图片搜索结果

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)

你可能感兴趣的:(python3 urllib3批量下载图片搜索结果)