今天学习了订票网站的信息爬虫,由于该类网站对信息具有一定的加密反爬虫手段,因此要先对该类信息进行解密
1.同之前获取目标网页,在实战中发现网页友谊隐藏了车次信息,无法直接在网页源码中找到该类信息,于是在网页中打开F12的network,结果发现再网页中点击查询按钮后网页的后台会专门以ajax的方式发送一份文件,并且在该文件中发现了目标车辆信息
#获取目标网页
def querry():
respose=requests.get('https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=2019-02-26&leftTicketDTO.from_station=TYV&leftTicketDTO.to_station=TJP&purpose_codes=ADULT')
# print(respose.text)
return respose.json()['data']['result']
2.分割数据,解析数据,通过观察数据信息,发现所有关键信息都以 ’ | '来区分,于是本人采用split来分割数据,并且使用变量 j 来统计数据的索引号,最后成功解析出余票的索引号
for i in querry():
#以|为分割数据信息用以更好看清数据
tim_list = i.split('|')
#定义变量给数据做标记
j=0
for n in tim_list:
print(j,n)
j+=1
# 车序列号:3
# 二等座:30 一等座:21 商务座:32 无座:26 软卧:23 硬卧:28 硬座:29 高级软卧:21
#本测试用例以硬座为测试对象
3.利用索引取相应数据
#判断
if tim_list[29]!='无' and tim_list[29]!='':
print(tim_list[3],'有票',tim_list[29])
else:
print(tim_list[3],'没票')