""" 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("偶像图片下载完成")
我输入了我的偶像韦德,他的一些图片就都下载了下来
当然,你也可以输入"清纯小姐姐私房照"这几个字,看下效果啦,你懂的。。。
再来一个例子吧,输入神"佟丽娅"三个字,结果如下: