在之前船讯网爬虫船舶得各种mmsi\imo信息的时候由于爬取过多导致被反爬,因此针对这个问题修改了代码如下!
COOKIE的处理:
保存客户端的相关状态
在爬虫中如果遇到了cookie的反爬如何处理?
手动处理
在抓包工具中捕获cookie,将其封装在headers中
应用场景:cookie没有有效时长且不是动态变化
自动处理
使用session机制
使用场景:动态变化的cookie
session对象:该对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中.
代码:
网页:船讯网|http://www.shipxy.com/
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
session = requests.Session()
main_url = 'http://www.shipxy.com/' # 推测对该url发起请求会产生cookie
session.get(main_url, headers=headers)
url = 'http://www.shipxy.com/ship/GetShip'
params = {
'mmsi': chuan,
}
page_text = session.get(url, headers=headers, params=params).json()