今天用python爬虫加上线程池下载保存关键词百度搜索的图片
运行代码,搜索关键词,通过线程池,一键下载多张图片
关注公众号回复 百度图片 获取源代码
看效果:
首先打开网站
随便搜索一个关键词
再页面源代码中找到data-objurl,data-objurl他的值就是一个图片,我们就把他下载下来就行,用爬虫来进行访问
我们先要找到所有的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)
公众号回复 百度图片 获取源代码
右键运行代码,输入关键字,即可批量下载
感谢观看,欢迎分享