又到了一年一度的国庆假期。今年国庆、中秋撞到一起,所以打算回家过节。从帝都到海口,每到节假日的机票都是全价票…2400大洋的单程票,消费不起呀!所以为了买到便宜点的机票,我就写了一个简单的爬虫来监控机票价钱。
可能有人会觉得,阿里飞猪,携程什么的都有监控,何必自找麻烦。对于一个程序员来说,能自己做到的事情就不会去使用别人的东西。而且他们的产品不一定能满足我的需求啊。废话不多说,正文分割线!
分析目标地址
跟以前一样,爬虫第一件事。分析目标,看他是怎么处理机票查询。
地址:https://jipiao.jd.com/
进入查询页面后,发现京东查机票。一共发了三个异步的get请求来请求机票数据。
这里,我也没弄明白为什么京东要使用3个请求来获取机票信息。多次测试发现,这三个请求中会有概率查不到机票。既然这样,我们代码中也请求三次,直到拿到机票结果信息。
构建请求
首先我们需要构建一个get请求,把参数一起传过去。
#模拟请求头(可以根据自己浏览器访问,直接copy过来。)
headers = {
'Host': "jipiao.jd.com",
'Accept-Language': "zh-CN,zh;q=0.8,en;q=0.6",
'Accept-Encoding': "gzip, deflate, br",
'X-Requested-With' : 'XMLHttpRequest',
'Connection': "keep-alive",
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"
}
#requests.session(),这样的requests请求,会带上前一次请求的sessionid
roon_session = requests.session()
#请求所携带的参数。需要哪些参数,分析目标地址。
payload