思路:首先抓取一个页面看看,对页面进行抓包分析
发现一些东西,应该会用到,(每个站点的代号)
以及如何去请求一个点对点的查询
分析:即便知道所有车站,以及点对点的查询,仍然不能有效的解决经过问题,数据量查询量太过庞大,且不能从起始站终点站来分析(太不全面)
所以,考虑每天发的车次是一定的,我们获取每天的所有车次,定可以查到其途径所有站点信息,再对经过郑州的车次进行筛选。
重点:在车次查询页面,页面本身的请求会产生一些有趣的东西,我们初始化这个页面
发现除了获取到所有站点的代号以外,还有一个重要的数据,包含近期所有的时间,很有可能是车次信息
进一步查看,基本确定,接下来百度
以C打头的车次:城际动车组列车
以D打头的车次:动车组列车
以G打头的车次:高速动车组列车
以Z打头的车次:直达特别快速旅客列车
以T打头的车次:特别快速旅客列车
以K打头的车次:快速旅客列车
以N打头的车次:管内快速旅客列车
L——临时“L”字头列车,代表临时列车 加增的,不常见应该(节假日)
A——临外临“A”字头列车 临时加增,突发情况
Y——旅游“Y”字头列车,代表旅游列车 我不懂
综上所述,以及又看了几个,发现没有问题,这就是最近一个月所有的列车信息,普通列车和高铁,全部!!!!!
然,我们只要最近两天的就行
接下来的任务就是抓取这两个文件,然后解析他们,获得数据进行处理
python构造和浏览器一样的头部,对这两个地址进行抓取
#获取所有的站点代号
import requests,re
url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9066'
html = requests.get(url).text
with open('station.txt','w') as f:
f.write(html)
print(html)
一会再分析,注意编码GBK
#获取最近两天所有车次信息
import requests
url = 'https://kyfw.12306.cn/otn/resources/js/query/train_list.js?scriptVersion=1.0'
html = requests.get(url).text
with open('trainlist.txt','w') as f:
f.write(html)