12306所有车次及时刻表的爬取上

首先先介绍我最终的目标:爬取全国所有车次的经停站信息,就是图1的红色框出来的部分。那么我们所需要的是什么呢?对,就是全国所有的车次,这就是我们的第一个小目标

图1:在这里插入图片描述
接着我就在XHR里抓包,结果见图2,在红色方框里的这个包,里面刚好存着我们想要的数据,当然,如果你自己不嫌麻烦,一个个去ALL里面找也没关系。结果就是你找到一个包里存着我们想要的数据
图2:在这里插入图片描述
按照图三所示,取出url进行进一步分析
Request URL: https://kyfw.12306.cn/otn/queryTrainInfo/query?leftTicketDTO.train_no=2400000G130A&leftTicketDTO.train_date=2020-12-18&rand_code=
发现里面两个重要的参数如图4,一个是火车的编号,一个是日期,示例是G13这个车次的火车,所以进一步明确第一个小目标,先找到全国所有的车次及其所对应的编号。

图3:
xixi在这里插入图片描述
图4:
在这里插入图片描述
说起来真的很坑,我爬之前其实参考了很多csdn,但是他们都是用一个traninfo.js什么的包,链接如下:(https://kyfw.12306.cn/otn/resources/js/query/train_list.js?scriptVersion=1.0
这里存了大概一个月的车次数据,里面有我们所需要的车次以及编号,我先给大家看看之前这个js里存的东西,是图5的样子。我还花了好久去处理了去年的那个js文件,得到了所有车次和对应的车次编号,然而,能对得上也就百分之一的样子?好多车次编号都变了,再加上可能是12306反爬厉害了,或者是显示策略变了,不管什么原因,目前状况是我压根找不到那个存有一个月车次数据的包,所以不得不另想它法去获得所有车次和它对应的现在的编号。

图5:在这里插入图片描述
接着就是如图6所示,我发现在我输入G的时候,XHR里面能找到这个,里面全部是G开头的车次数据,不过最多显示200条,这是它的urlhttps://search.12306.cn/search/v1/train/searchkeyword=G&date=20201221,其实可以大概猜出来我改变这个keyword,然后差不多就能找到车次数据。因为有前面处理那个js的经验,知道车次类型大概是怎样的,所以现在大概的思路是我整一个list,里面存一些keyword,再整一个时间list,爬取近一个月的,由于显示只有200条,为了数据的准确性,我们必须想办法让每次显示的数据<200,我是笨办法,就是一步步缩小范围,G1,G2,实在不行我G11,G12…大概就是这个意思,具体实现等爬取中和下篇再写吧。
图6:
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值