python爬取12306_python爬取12306火车车次信息
发布日期:2021-09-13 06:38:53 浏览次数:9 分类:技术文章

本文共 2394 字,大约阅读时间需要 7 分钟。

#-*- coding:utf-8 -*-

importrequestsimportreimportjson#关闭https证书验证警告

requests.packages.urllib3.disable_warnings()defgetStation():#12306的城市名和城市代码js文件url

url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9018'r= requests.get(url, verify=False)

pattern= u'([\u4e00-\u9fa5]+)\|([A-Z]+)'result=re.findall(pattern, r.text)

station= dict(result) #所有车站信息

#print(station)

returnstation'''查询两站之间的火车票信息

输入参数:

12306 api:

'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-07-18&leftTicketDTO.from_station=NJH&leftTicketDTO.to_station=SZH&purpose_codes=ADULT''''

#生成查询的url

defget_query_url(text,date,from_station,to_station):#城市名代码查询字典

#key:城市名 value:城市代码

try:

date=date

from_station_name=from_station

to_station_name=to_station

from_station=text[from_station_name]

to_station=text[to_station_name]except:

date, from_station, to_station= '--', '--', '--'

#将城市名转换为城市代码

#api url 构造

url =('https://kyfw.12306.cn/otn/leftTicket/query?'

'leftTicketDTO.train_date={}&'

'leftTicketDTO.from_station={}&'

'leftTicketDTO.to_station={}&'

'purpose_codes=ADULT').format(date, from_station, to_station)returnurl#获取信息

defquery_train_info(url, text):'''查询火车票信息:

返回 信息查询列表'''info_list=[]try:

r= requests.get(url, verify=False)#获取返回的json数据里的data字段的result结果

raw_trains = r.json()['data']['result']for raw_train in raw_trains: #循环遍历每辆车的信息

data_list = raw_train.split('|')

train_no= data_list[3] #车次号码

from_station_code = data_list[6] #出发站

from_station_name = text['北京西']

to_station_code= data_list[7] #终点站

to_station_name = text['亳州']

start_time= data_list[8] #出发时间

arrive_time = data_list[9] #到达时间

time_fucked_up = data_list[10] #行车耗时

first_class_seat = data_list[31] or '--' #一等座

second_class_seat = data_list[30] or '--' #二等座

soft_sleep = data_list[23] or '--' #软卧

hard_sleep = data_list[28] or '--' #硬卧

hard_seat = data_list[29] or '--' #硬座

no_seat = data_list[26] or '--' #无座

#打印查询结果

info =('车次:{}\n出发站:{}\n目的地:{}\n出发时间:{}\n到达时间:{}\n消耗时间:{}\n座位情况:\n 一等座:「{}」 \n二等座:「{}」\n软卧:「{}」\n硬卧:「{}」\n硬座:「{}」\n无座:「{}」\n\n'.format(

train_no, from_station_name, to_station_name, start_time, arrive_time, time_fucked_up, first_class_seat,

second_class_seat, soft_sleep, hard_sleep, hard_seat, no_seat))print(info)

info_list.append(info)returninfo_listexcept:return '输出信息有误,请重新输入'text=getStation();

url= get_query_url(text,'2018-12-10','北京西','亳州')

query_train_info(url, text)

转载地址:https://blog.csdn.net/weixin_39767645/article/details/110888067 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:pythonchar中的拟合方法_Python torch.CharTensor方法代碼示例
下一篇:python强制删除文件夹_对Python各种删除文件失败的处理方式-强制删除文件

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 00时01分11秒