美文网首页
python3 urllib3批量下载图片搜索结果

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

作者: Yijie0710 | 来源:发表于2017-10-18 10:02 被阅读448次

    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批量下载图片搜索结果

          本文链接:https://www.haomeiwen.com/subject/sjjsuxtx.html