一共分为俩个函数
1,获取城市的各个缩写
def city_number():#获取城市各地区缩写如 "北京":"KCN"
ko=[]
lp=[]
html=requests.get("https://kyfw.12306.cn/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("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E5%8E%A6%E9%97%A8,XMS&ts=%E6%BD%A2%E5%B7%9D,KCN&date=2019-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("https://kyfw.12306.cn/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]