百度图片有数据接口,请求数据接口可以得到图片url。import requests
import os
from tqdm import tqdm
def save_img(wd, id_, url):
if not os.path.exists(wd):
os.mkdir(wd)
img_name = f'{wd}/{id_}.jpeg'
if not os.path.exists(img_name):
img = requests.get(url)
with open(img_name, 'wb') as f:
f.write(img.content)
def get_img(page):
url = 'https://image.baidu.com/search/albumsdata' # 数据接口
header = {'user-agent': 'Mozilla/5.0'}
rn = 30
word = '宠物图片'
for i in range(0, page):
pn = i * rn
params = {
'pn': pn, # 翻页参数(每一页+30)
'rn': rn, # 每一页图片数(固定30)
'tn': 'albumsdetail', # 类型(albumsdetail)
'word': word, # 关键词
'album_tab': '动物', # 专辑(例如你想爬动物,那么这个参数就是动物)
'album_id': 688, # 专辑id(动物专辑id是688)
'curPageNum': i # 翻页参数,页码
}
res = requests.get(url, headers=header, params=params).json()
imgs = res.get('albumdata').get('linkData')
for img in tqdm(imgs, f'第{i+1}页'):
img_id = img.get('pid')
img_url = img.get('thumbnailUrl')
save_img(word, img_id, img_url)
if __name__ == '__main__':
num = int(input('输入需要下载的页数:'))
get_img(num)
|