'''
目的:requests 抓取百度多页图片
1.多请求几次,了解百度翻页是怎么实现的
2.找到翻页的规律 (百度属于瀑布流翻页)
3.构造翻页的请求
4.提取图片的url
5.请求图片url
6.保存图片
'''
import requests, os
from hashlib import md5
for i in range(1,4):
url=f'pn{i}*30' #找翻页规律 network --->Fetch/XHR
headers={}
resp=requests.get(url,headers=headers)
data=resp.json() #帮们把json格式的字符串转换成dict格式 前提条件就是resp 一定是json格式
data.list = data.get('date') #这是一个列表
for j in data.list:
img_url=j.get('thumbURL')
#使用md5加密把img_url这个字符串变成唯一的标识字符串
name=md5(img_url.encode()).hexdigest()
img_resp=requests.get(img_url)
with open(f'{name}.jpg','wb') as f:
f.write(img_resp.content)
#----------------------------------------------------------------------------------------
import requests, os
from hashlib import md5
if not os.path.exists('images'): #创建一个名为images的文件夹
os.mkdir('images')
for i in range(1,4): #区间左闭右开 3页 1-4
url=f'pn{i}*30' #发现翻页规律为pn * 页数 每次翻页+30张图片
headers={} #伪装
resp=requests.get(url,headers=headers) #得到json数据
data=resp.json() #将json数据转换为dict
data.list = data.get('data') #获得每页每张图片的data
for j in data.list:
img_url=j.get('thumbURL') #获得每页每张图片的thumbURL
if img_url: #如果不为空
name=md5(img_url.encode()).hexdigest() #加密
try:
img_resp=requests.get(img_url)
except Exception as e: #如果报错 报错后继续执行代码
print(e)
continue
else:
b_img_data=img_resp.content #不遇错 接着执行此代码
with open('images/'f'{name}.jpg','wb') as f: #写入
f.write(img_resp.content)
else:
continue #如果img_url 为空 continue
抓取百度图片实现翻页python
于 2023-11-10 11:23:20 首次发布