cookie处理动态加载页面
服务器根据用户储存的cookie数据,来加载相应的数据,这就是动态加载。
如果我们发送的请求没有包含cookie数据,很大几率是拿不到正常数据的。你会看到“遇到错误,请刷新页面或者重新登录账号后重试”等类似的字样。
获取cookie数据,创建session()对象发送主页面的请求,获得的数据里就包含了cookie的数据。
session = requests.Session() #创建session()对象
session.get(url=main,headers=headerS) #用session发送请求,cookie数据就在seesion里面
获取动态加载的数据内容,用已包含cookie数据的session对象请求动态加载出来的url,就可以拿到正常的数据了。
resp_session = session.get(url_photo,headers=headers)
下面是一个小案例,大家可以参考一下:
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"referer": "https://www.ixigua.com/"
}
url_photo = "https://p3-sign.bdxiguaimg.com/tos-cn-i-0004/cf2708f0dc144c2cab745f91a800998a~tplv-pk90l89vgd-crop-center:864:486.webp?x-expires=1670142520&x-signature=kkgmmzyiCwc5Y9eJgxFC216bNA8%3D"
main = "https://www.ixigua.com/"
session = requests.Session() #创建session()对象
session.get(main,headers=headers) #获得包含cookie数据的session
resp_session = session.get(url_photo,headers=headers) #用包含cookie数据的session请求动态加载的url
with open("photo.jpg",mode="wb") as f:
f.write(resp_session.content)
print("执行完成!✔")