0
点赞
收藏
分享

微信扫一扫

python多线程-通过关键词下载百度图片

今天用python爬虫加上线程池下载保存关键词百度搜索的图片

运行代码,搜索关键词,通过线程池,一键下载多张图片

关注公众号回复 百度图片 获取源代码


看效果:


python多线程-通过关键词下载百度图片_Parse


首先打开网站

随便搜索一个关键词

再页面源代码中找到data-objurl,data-objurl他的值就是一个图片,我们就把他下载下来就行,用爬虫来进行访问

python多线程-通过关键词下载百度图片_线程池_02

我们先要找到所有的data-objurl,然后再for循环多线程去访问下载保存

上代码

这部分是访问首页,获取源码,提取data-objurl,

这里封装成类了,url的关键字来手动输入搜索

def __init__(self,word):    key_word = parse.quote(word)    url = f"https://image.baidu.com/search/index?tn=baiduimage&wd={key_word}"    self.url = url
  # 访问首页获取源代码  def Res(self):    r = requests.get(url=self.url,headers=Pachong.header)    self.html = r.text
# 解析提取data-objurl  def Parse(self):    str = re.findall("\"objURL\":\"(.*?)\",",self.html)    self.str = str

然后就是下载保存

这里用了线程池

def Xz(self,i):
    f = open(f'bd/{i}.jpg', 'wb')
    head = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50"}
    tp = requests.get(url=self.str[i],timeout=15,headers=head).content
    f.write(tp)
print(f'保存完成{i},图片地址:{self.str[i]}')

if __name__ == '__main__':
  p1 = Pachong(word=input('请输入你要搜索的图片关键字:'))
  p1.Res()
  p1.Parse()

with ThreadPoolExecutor(10) as t:
for i in range(20):
     t.submit(p1.Xz,i)



公众号回复 百度图片 获取源代码

右键运行代码,输入关键字,即可批量下载

感谢观看,欢迎分享


举报

相关推荐

0 条评论