700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python火车票票价_python的requests库爬取火车票信息和所需价钱

python火车票票价_python的requests库爬取火车票信息和所需价钱

时间:2021-01-19 05:00:53

相关推荐

python火车票票价_python的requests库爬取火车票信息和所需价钱

一共分为俩个函数

1,获取城市的各个缩写

def city_number():#获取城市各地区缩写如 "北京":"KCN"

ko=[]

lp=[]

html=requests.get("/otn/resources/js/framework/station_name.js",headers=headers)

htmls=html.content.decode()

opp=htmls[:len(htmls)-1].split("=")[1]

lists_opp=opp.split("|")

for name in lists_opp:

if "@" in name:

lists_opp.remove(name)

for i in range(len(lists_opp)):

if i % 2==0:

ko.append(lists_opp[i])

else :

lp.append(lists_opp[i])

#print(lists_opp)

return dict(zip(ko,lp))

2 ,输入出入发地 得到i结果

def station_infos():

while True:

zidian=city_number()

left=input("请输入出发地:")

lefts=zidian[left]

right=input("请输入到达地:")

time.strftime("")

rights=zidian[right]

shijian=time.strftime("%Y-%m-%d")#格式化时间,,,今天时间

times=input("请输入时间(%s):"%shijian)

if len(times)==0:

times=shijian

html=requests.get("/otn/leftTicket/init?linktypeid=dc&fs=%E5%8E%A6%E9%97%A8,XMS&ts=%E6%BD%A2%E5%B7%9D,KCN&date=-10-20&flag=N,N,Y",headers=headers)

for index_url in html.cookies:

Cookies[index_url.name]=index_url.value

r=requests.session()

hui=r.get("/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format(times,lefts,rights),headers=headers,cookies=Cookies)

big_car=json.loads(hui.text)['data']['map']

pop=list(big_car.values())

#number_info=len(json.loads(hui.text)['data']['result'])#几辆火车

station_info=json.loads(hui.text)['data']['result']

if len(station_info)==0:

print("当前无车次")

else:

for info in station_info:

data_list=info.split("|")

train_no=data_list[2]

kop="/otn/leftTicket/queryTicketPrice?train_no={}&from_station_no={}&to_station_no={}&seat_types={}&train_date={}".format(train_no,data_list[16],data_list[17],data_list[35],times)

prices=r.get(kop,headers=headers,cookies=Cookies)#获取车票价钱

ko=json.loads(prices.text)

train_number = data_list[3] #1,车次

go_time = data_list[8] # 2,出发时间

arrive_time = data_list[9] # 3到达时间

cost_time = data_list[10] # 4历时

special_class_seat = data_list[32] or '--' # 5 商务/特等座

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

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

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

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

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

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

if 'M' and 'O' in ko['data']:

st=ko['data']['A9']#商务座/特等座

first=ko['data']['M']#一等座

sec=ko['data']['O']#二等座

wz=ko['data']['WZ']#无座价钱

print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{} 硬卧:{} 硬座:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,hard_sleep,hard_seat,no_seat,wz,data_list[13]))

elif 'A1' in ko['data']:

yingz=ko['data']['A1']#硬座价钱

yingw=ko['data']['A3']#硬卧价钱

ruanwz=ko['data']['A4']#软卧价钱

wz=ko['data']['WZ']#无座价钱

print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 一等座:{} 二等座:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,first_class_seat,second_class_seat,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))

elif 'A9' and 'A1' in ko['data']:

st=ko['data']['A9']#商务座/特等座

first=ko['data']['M']#一等座

sec=ko['data']['O']#二等座

wz=ko['data']['WZ']#无座价钱

yingz=ko['data']['A1']#硬座价钱

yingw=ko['data']['A3']#硬卧价钱

ruanwz=ko['data']['A4']#软卧价钱

print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))

3,以下是完整代码

import requests

import json

import time

headers={

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"

}

Cookies={}

def station_infos():

while True:

zidian=city_number()

left=input("请输入出发地:")

lefts=zidian[left]

right=input("请输入到达地:")

time.strftime("")

rights=zidian[right]

shijian=time.strftime("%Y-%m-%d")#格式化时间,,,今天时间

times=input("请输入时间(%s):"%shijian)

if len(times)==0:

times=shijian

html=requests.get("/otn/leftTicket/init?linktypeid=dc&fs=%E5%8E%A6%E9%97%A8,XMS&ts=%E6%BD%A2%E5%B7%9D,KCN&date=-10-20&flag=N,N,Y",headers=headers)

for index_url in html.cookies:

Cookies[index_url.name]=index_url.value

r=requests.session()

hui=r.get("/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format(times,lefts,rights),headers=headers,cookies=Cookies)

big_car=json.loads(hui.text)['data']['map']

pop=list(big_car.values())

#number_info=len(json.loads(hui.text)['data']['result'])#几辆火车

station_info=json.loads(hui.text)['data']['result']

if len(station_info)==0:

print("当前无车次")

else:

for info in station_info:

data_list=info.split("|")

train_no=data_list[2]

kop="/otn/leftTicket/queryTicketPrice?train_no={}&from_station_no={}&to_station_no={}&seat_types={}&train_date={}".format(train_no,data_list[16],data_list[17],data_list[35],times)

prices=r.get(kop,headers=headers,cookies=Cookies)#获取车票价钱

ko=json.loads(prices.text)

train_number = data_list[3] #1,车次

go_time = data_list[8] # 2,出发时间

arrive_time = data_list[9] # 3到达时间

cost_time = data_list[10] # 4历时

special_class_seat = data_list[32] or '--' # 5 商务/特等座

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

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

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

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

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

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

if 'M' and 'O' in ko['data']:

print("风格化法国")

st=ko['data']['A9']#商务座/特等座

first=ko['data']['M']#一等座

sec=ko['data']['O']#二等座

wz=ko['data']['WZ']#无座价钱

print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{} 硬卧:{} 硬座:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,hard_sleep,hard_seat,no_seat,wz,data_list[13]))

elif 'A1' in ko['data']:

print("和梵蒂冈")

yingz=ko['data']['A1']#硬座价钱

yingw=ko['data']['A3']#硬卧价钱

ruanwz=ko['data']['A4']#软卧价钱

wz=ko['data']['WZ']#无座价钱

print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 一等座:{} 二等座:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,first_class_seat,second_class_seat,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))

elif 'A9' and 'A1' in ko['data']:

print("改好发给")

st=ko['data']['A9']#商务座/特等座

first=ko['data']['M']#一等座

sec=ko['data']['O']#二等座

wz=ko['data']['WZ']#无座价钱

yingz=ko['data']['A1']#硬座价钱

yingw=ko['data']['A3']#硬卧价钱

ruanwz=ko['data']['A4']#软卧价钱

print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))

def city_number():#获取城市各地区缩写如 "北京":"KCN"

ko=[]

lp=[]

html=requests.get("/otn/resources/js/framework/station_name.js",headers=headers)

htmls=html.content.decode()

opp=htmls[:len(htmls)-1].split("=")[1]

lists_opp=opp.split("|")

for name in lists_opp:

if "@" in name:

lists_opp.remove(name)

for i in range(len(lists_opp)):

if i % 2==0:

ko.append(lists_opp[i])

else :

lp.append(lists_opp[i])

#print(lists_opp)

return dict(zip(ko,lp))

if __name__=="__main__":

station_infos()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。