1.废话不多说,直接上源码,有注释,相信你们能看到
"""
objective:爬取任意偶像/单词的百度图片(eg:佟丽娅、清纯小姐姐、蔡徐坤)
coding: UTF-8
time:2021/5/5
author:始终是个小白
"""
# 导入相关库
import re
import requests
import os
def dowmload(html, search_word, j):
pic_url = re.findall('"objURL":"(.*?)",.*?"fromURL"', html, re.S) # 利用正则表达式找每一个图片的网址
# print(pic_url)
n = j * 60
for k in pic_url:
print('正在下载第' + str(n+1) + '张图片,图片地址:' + str(k))
try:
pic = requests.get(k, timeout=20)
except requests.exceptions.ConnectionError:
print('当前图片无法下载')
continue
dir_path = r'D:\偶像图片\偶像' + search_word + '_' + str(n+1) + '.jpg'
if not os.path.exists('D:\偶像图片'):
os.makedirs('D:\偶像图片')
fp = open(dir_path, 'wb')
fp.write(pic.content)
fp.close()
n += 1
if __name__ == '__main__':
name = input("输入你想要获取偶像的名称: ")
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}
page = 1 # 可以自定义,想获取几页就是几页,一页有60张图片,但是有的可能就很少,自己注意下
for i in range(page):
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + name + '&pn=' + str(i * 20) # 网址
result = requests.get(url, headers=headers) # 请求网址
# print(result.content) # 如果运行失败,一步一步找到原因,可以先看下网页输出的内容
dowmload(result.content.decode('utf-8'), name, i) # 保存图片
print("偶像图片下载完成")
2.输入偶像/其他关键词名称,结果如下
我输入了我的偶像韦德,他的一些图片就都下载了下来
当然,你也可以输入"清纯小姐姐私房照"这几个字,看下效果啦,你懂的。。。
再来一个例子吧,输入神"佟丽娅"三个字,结果如下: