最近项目要求对黑烟进行检测,在网上找其他博主要了一些数据集,自己也发现了一个可以爬取百度图片的脚本,在此分享给大家!!!不多说,下面直接上代码。
# -*- coding:utf-8 -*-
# @Time : 2020/12/24 16:28
# @Author: JulyLi
# @File : spider.py
import requests
import re
num = 0
numPicture = 0
file = ''
List = []
def dowmloadPicture(html, keyword):
global num
# t =0
pic_url = re.findall('"objURL":"(.*?)",', html, re.S) # 先利用正则表达式找到图片url
print('找到关键词:' + keyword + '的图片,即将开始下载图片...')
for each in pic_url:
print('正在下载第' + str(num + 1) + '张图片,图片地址:' + str(each))
try:
if each is not None:
pic = requests.get(each, timeout=7)
else:
continue
except BaseException:
print('错误,当前图片无法下载')
continue
else:
string = './output/' + keyword + '_' + str(num) + '.jpg'
fp = open(string, 'wb')
fp.write(pic.content)
fp.close()
num += 1
# if num >= numPicture:
# return
if __name__ == '__main__': # 主函数入口
header = {'content-type': 'application/json',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
word = input("请输入搜索关键词(可以是人名,地名等): ")
num1 = 0
while 1:
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn='
r = requests.get(url + str(num1), headers=header, allow_redirects=False)
r.encoding = 'utf-8'
dowmloadPicture(r.text, word)
num1 = num1 + 20
注意:脚本只要运行,需要自己停止,一般爬取一个词条几百张图就差不多哦,因为里面会存在重复或者不相关的图片,后期还是需要自己筛选的!!!
如果阅读本文对你有用,欢迎点赞评论收藏呀!!!