python爬取12306火车票信息,python爬虫之12306网站--火车票信息查询

importrequestsfrom prettytable importPrettyTable

url1="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9090"txt=requests.get(url1).text

inf=txt[:-2].split("@")[1:]#print(inf)

stations={}for record ininf:

rlist=record.split("|")

stations[rlist[2]]={"cn":rlist[1],"qp":rlist[3],"jp":rlist[4]} #把车站编码当作key#print(stations)

defgetcode(t):whileTrue:

s1=input("%s站:"%t)

r1=[]for id,station instations.items():if s1 instation.values():

r1.append((id,station))ifr1:break

print("没有这个车站。")print("请重新输入。")if len(r1)==1:

sid=r1[0][0]else:print("你需要在以下车站里选择:")for i inrange(len(r1)):print(i+1,r1[i][1]["cn"])

sel=int(input("你的选择是:"))-1sid=r1[sel][0]returnsid

fromstation=getcode("出发")

tostation=getcode("到达")

chufatime=input("出发日期(格式2019-01-01):").strip()

qurl="https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format(chufatime,fromstation,tostation)print(qurl)print("你输入的查询条件是:出发站=%s,到达站=%s"%(stations[fromstation]["cn"],stations[tostation]["cn"]))

ainf=requests.get(qurl).json()["data"]["result"] #json文件存储当前从出发站到目的站的所有车次的详细信息#print(ainf,type(ainf))

result=[]

gaotie=[]

huoche=[]for i inainf:

list=i.split("|")

checi=list[3]

chufa=stations[list[6]]["cn"]

mudi=stations[list[7]]["cn"]

ftime=list[8]

dtime=list[9]

sw=list[32]

yd=list[31]

rw=list[23]

yw=list[26]

wuzuo=list[28]

ed=list[30]

yz=list[29]

result.append((checi,chufa,mudi,ftime,dtime,sw,yd,ed,yz,yw,rw,wuzuo))if checi[0] in ["G","D"]:

gaotie.append([checi,chufa,mudi,ftime,dtime,sw,yd,ed])else:

huoche.append([checi,chufa,mudi,ftime,dtime,yz,yw,rw,wuzuo])#print(result)

whileTrue:print("请输入查看信息:1、全部 2、高铁、动车 3、火车 4、退出")

show=int(input("请选择:"))if show==1:

table=PrettyTable(["车次","出发站","目的站","发车时间","到达时间","商务座","一等座","二等座","硬座","硬卧","软卧","无座"])for i inresult:

table.add_row([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11]])print(table)elif show==2:

table=PrettyTable(["车次","出发站","目的站","发车时间","到达时间","商务座","一等座","二等座"])for i ingaotie:

table.add_row([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]])print(table)elif show==3:

table=PrettyTable(["车次","出发站","目的站","发车时间","到达时间","硬座","硬卧","软卧","无座"])for i inhuoche:

table.add_row([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8]])print(table)elif show==4:print("查询结束!")break

else:print("输入错误请重新输入!")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值