前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python图片爬虫,某度图片多线程爬取方法附工具脚本助手

Python图片爬虫,某度图片多线程爬取方法附工具脚本助手

作者头像
二爷
发布2021-07-05 11:42:54
6270
发布2021-07-05 11:42:54
举报
文章被收录于专栏:二爷记二爷记

相信不少老哥的爬虫之路都是从图片爬取开始的,之所以走上这条不归路,不就是爬几个小(美)破(女)图么,本渣渣也写过不少图片爬虫,有一篇妹子图的爬虫可谓是手把手实战教学,印象深刻,对于图片素材类爬取,不同人群有着不同的用途,就看你的初衷是什么了。

下面本渣渣带来一篇图片爬虫,某度的搜索图片爬虫,简单的使用了线程池的多线程爬取,比较简单,知晓了接口数据的调用就可以简单的实现,只需要输入查询关键词及页码即可以获取到想要的图片数据,同时也打包了一下exe脚本工具,供各位大表哥们看着玩!

exe工具助手运行效果,文末可获取工具

爬取图片的初衷肯定是用于网站配图,毕竟本渣渣乡下狗,跟不上城里人的营养节奏,营养快线没钱买啊,每瓶喝完必须添盖!

不过此类图片的使用需要注意规避版权,同时也需要注意过滤掉有水印的图片,当然如果你想要用于网站上,避免图片版权纠纷的话,最好还是上可共享,无版权的图片吧!

比如推荐下面这个:

获取素材图无忧,Pixabay图库网Python多线程采集下载

获取图片数据关键源码
代码语言:javascript
复制
#获取图片数据
def get_imglist(word,page,path):
    print(f">> 正在爬取第 {page} 页图片数据..")
    img_data=[]
    url="https://image.baidu.com/search/acjson?"
    headers = {
        "User-Agent": UserAgent().random,
        "X-Requested-With": "XMLHttpRequest"
    }
    params={
        "tn": "resultjson_com",
        "logid": "10383979932265521370",
        "ipn": "rj",
        "ct": "201326592",
        "is": "",
        "fp": "result",
        "queryWord": word,
        "cl": "2",
        "lm": "-1",
        "ie": "utf-8",
        "oe": "utf-8",
        "adpicid": "",
        "st": "",
        "z": "",
        "ic": "",
        "hd": "",
        "latest": "",
        "copyright": "",
        "word": word,
        "s": "",
        "se": "",
        "tab": "",
        "width": "",
        "height": "",
        "face": "",
        "istype": "",
        "q": "",
        "nc": "1",
        "fr": "",
        "expermode:": "",
        "nojc": "",
        "pn": 30*page,
        "rn": "30",
        "gsm": "1e",
        "1624245957244": "",
    }
    response=requests.get(url=url,params=params,headers=headers,timeout=5)
    time.sleep(2)
    json_data=response.json()
    print(json_data)
    data_lists=json_data['data']
    print(data_lists)
    i=1
    for data_list in data_lists:
        if data_list:
            title=data_list['fromPageTitleEnc']
            print(title)
            title=get_title(title)
            title=f'{page}_{i}_{title}'
            thumbURL=data_list['thumbURL']
            print(thumbURL)
            imgdata=title,thumbURL,path
            img_data.append(imgdata)
            i=i+1


    return img_data

经常撸某度的话,应该比较熟悉,其参数比较繁多,各种记录数据,爬取图片数据除了关键词的参数之外,就是页码数需要注意了,"pn": 30*page 就是页码数,30个数据一页!

浏览器抓包数据参考
线程池多线程源码
代码语言:javascript
复制
#多线程下载图片
def Thread_down_img(img_data):
    try:
        # 开4个 worker,没有参数时默认是 cpu 的核心数
        pool = ThreadPool()
        results = pool.map(dowm_img,img_data)
        pool.close()
        pool.join()
    except:
        print("Error: unable to start thread")

    print("多线程下载图片完成!")
图片爬取运行效果

完整爬虫源码及exe工具获取

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与SEO学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取素材图无忧,Pixabay图库网Python多线程采集下载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档