内容正文:
少儿编程课
1
火车票查询工具
本节课我们来编写一个爬虫案例,制作12306火车票查询工具
3
现在我们开始制作这个查询工具,首先获取接口
1
打开12306,在余票查询页面,点击F12,点击查询按钮
在Network中可以看到本次查询时所有的网络请求接口
1
2
接口参数与网页填写数据对应关系:
这里第二个接口就是火车票数据查询接口,如下:
https://kyfw.12306.cn/otn/leftTicket/query
?leftTicketDTO.train_date=2017‐09‐25&
leftTicketDTO.from_station=ZZF&
leftTicketDTO.to_station=KFF&
purpose_codes=ADULT
其中:
1、leftTicketDTO.train_date表示查询日期
2、leftTicketDTO.from_station:表示出发地编码
3、leftTicketDTO.to_station:表示目的地编码
4、purpose_codes:表示票的类型,ADULT表示成人,如果是学生,则值为0X00
访问这个接口地址,获取本次查询的全部JSON数据
1
返回的数据如下:
分析数据
7
接下来,我们对得到的数据进行分析,先规整数据
把数据中的result部分(车票部分)存入文本,然后导入到excel(用|分割即可),删除没用的列,空列等,最终效果如下:
1
然后将数据和12306上的查询数据作对比
12306查询数据如下:
1
2
将每列的含义分析出来
Python获取数据
10
分析完数据之后,剩下的工作就是获取数据然后展示了,首先获取数据
定义获接口数据的方法,先拼接完整路径
1
访问接口地址
2
def get_json(url, train_date, from_station, to_station,purpose_codes='ADULT'):
url = url + '?leftTicketDTO.train_date=' \
+ train_date + '&leftTicketDTO.from_station=' \
+ from_station + '&leftTicketDTO.to_station='\
+ to_station + '&purpose_codes=' + purpose_codes
req = request.Request(url)
分析完数据之后,剩下的工作就是获取数据然后展示了,首先获取数据
向请求头添加User—Agent信息,模拟浏览器登陆
1
2
向请求头添加Cookie信息
req.add_header('User‐Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64)'
'AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/56.0.2924.87Safari/537.36')
req.add_header('Cookie', 'BLPROV=; JSESSIONID=17F82C085BEAE9774B1D7D18363207AA; '
'route=6f50b51faa11b987e576cdb301e545c4; '
'BIGipServerotn=1473839370.50210.0000; fp_ver=4.5.1; '
'RAIL_EXPIRATION=1505522206734; RAIL_DEVICEID=ngfa0xXXc43AwRde'
'PQiYKNAXLxgF_0NC4u29FDPVr73XbEdk2jAZXdZmGwbMs5tmX28EVf3pqQWywtJRAN '
'yU‐F1F4o1jEN2J8gI5mQVerkJAel9E5ACri_F7hggwk7zmV0IkRNjiH5CA0RFxBPLTsBkmBvAJ9_;'
' current_captcha_type=C; _jc_save_fromStation=%u90D1%u5DDE%2CZZF;'