学习了python总要拿点东西练练手,爬个东西玩玩吧.参考了一篇文章,地址找不到了,就把注释加一下吧
import requests
#正则 参考https://docs.python.org/zh-cn/3/library/re.html
import re
#操作 https://docs.python.org/zh-cn/3/library/os.html?highlight=os#module-os
import os
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'}
name = input('您要爬取什么图片')
num = 0
x = input('您要爬取几张呢?,输入1等于60张图片。')
for i in range(int(x)):
# 下载到本地图片的位置
name_1 = 'C:\\Users\\Administrator\\Desktop\\pic\\'
# 根据百度图片url发现可以将输入的种类拼接得到对应图片集
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+name+'&pn='+str(i*30)
res = requests.get(url,headers=headers)
print(res)
htlm_1 = res.content.decode()
# 正则匹配解析后的html 注意:这里也可以用python解析html的BeautifulSoup4工具或者pyquery等进行匹配
a =re.findall('"objURL":"(.*?)",',htlm_1)
# 如果没有文件夹就创建
if not os.path.exists(name_1):
os.makedirs(name_1)
# 循环写到本地
for b in a:
num = num +1
try:
img = requests.get(b)
except Exception as e:
print('第'+str(num)+'张图片无法下载------------')
print(str(e))
continue
f = open(name_1+name+str(num)+'.jpg','ab')
print('---------正在下载第'+str(num)+'张图片----------')
f.write(img.content)
f.close()
print('下载完成')