批量按需爬取百度图片
前段时间公司的测试小姐姐需要大量的人脸图片用于测试人脸识别算法的性能, 想从百度图片爬取。
我综合网上的例子给写了个。
代码很简单,但可用。
# -*- conding: utf-8 -*-
import json
import requests
"""批量爬取百度图片,获得url后,可以通过迅雷等下载工具批量下载"""
REQUEST_URL = 'http://image.baidu.com/search/avatarjson?tn=resultjsonavatarnew'
KEY_WORD = '人脸'
FILE = 'img_url.txt'
START_NUM = 1
END_NUM = 10
def start_get_img(key_word, pn):
args = {'word': key_word, 'pn': pn}
r = requests.get(REQUEST_URL, args)
data = json.loads(r.text)
imgs = data.get('imgs', [])
urls = [img.get('objURL', '')+'\n' for img in imgs]
return urls
if __name__ == '__main__':
with open(FILE, 'w+') as f:
pn = START_NUM
print('Starting...')
while START_NUM <= END_NUM:
urls = start_get_img(KEY_WORD, pn)
f.writelines(urls)
pn += 30
print(str(START_NUM) + '/' + str(END_NUM))
START_NUM += 1
print('End!')
修改这些全局变量可以改变一些设置
KEY_WORD = '人脸' # 搜索关键字
FILE = 'img_url.txt' # 图片URL默认保存在代码同级目录中的img_url.txt文件,可修改
START_NUM = 1 # 起始位置
END_NUM = 10 # 截至位置
一个页面即会返回30张图片, 如果你的起始和截至分别设为 1 - 10 ,也就是说你会爬取: 10 * 30 = 300 张图片的url.
github地址: https://github.com/a523/baiduImg