1.知识点
x-requested-with 请求头 区分ajax请求还是普通请求
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
2.异常网站
aHR0cHM6Ly93d3cuZGVncnV5dGVyLmNvbS92aWV3L2pvdXJuYWxzL3Rqai90amotb3ZlcnZpZXcueG1sP3RhYl9ib2R5PXRvYy02ODg3MQ==
3.现象
在抓取期刊列表页数据时,发现其数据为ajax请求,在发送post的请求中,未在headers中添加 sess.headers["X-Requested-With"] = "XMLHttpRequest" 导致发送的请求自动跳转到期刊首页,无法完成数据抓取
4.解决方法
明确需抓取的数据是post请求,携带的参数是前一个页面中的参数,在通过chrome浏览器headers常见参数比对时,发现多了X-Requested-With 这个异常参数,结合搜索引擎的结果,在请求头中带上这个参数,成功完成数据的抓取
5.演示代码
import requests
session = requests.session()
session.headers["X-Requested-With"] = "XMLHttpRequest"