#车站信息查询

import requests

#1.获得url(存取车站信息的url)并读取,根据获得信息的特点去掉无用的信息并转换存储到列表中

url="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9090"

txt=requests.get(url).text

#print(txt)

inf=txt[:-2].split("@")[1:] #得到的是存储所有车站信息的列表

#print(inf)

#2.通过循环把列表在进行分割转换成新的列表,取其中一项(车站顺序编号)当做字典的key,其余当作值,存储到新的字典中

stations={}

for record in inf:

rlist=record.split("|")

stations[int(rlist[-1])]={"cname":rlist[1],"id":rlist[2],"qp":rlist[3],"jx":rlist[4]}

#print(stations[0])

#print(stations.get(2848))

#print(stations.values())

#3.判断查询条件是否存在,存在如果唯一则打印并跳出循环,不唯一则显示查询的所有的结果,提供选择,根据选择的信息打印出结果然后跳出循环,不存在则打印提示信息,重新输出

while True:

s1=input("出发站:")

flag=0

result=[]

for station in stations.values():

if s1 in station.values():

#print(station)

result.append(station)

flag=1

if flag:

break

else:

print("没有这个车站!")

print("请重新输入!")

if len(result)==1:

resultId=result[0]["id"]

print("你输入的出发车站是%s,对应的车站ID是%s"%(result[0]["cname"],resultId))

else:

print("你输入的条件比较模糊,请在以下站中进行选择:")

for i in range(len(result)):

print(i+1,result[i]["cname"],result[i]["id"])

sel=int(input("你的选择:"))-1

resultId=result[sel]["id"]

print("你输入的出发车站是%s,对应的车站ID是%s"%(result[sel]["cname"],resultId))

while True:

s2=input("目的站:")

flag2=0

result2=[]

for station in stations.values():

if s2 in station.values():

#print(station)

result2.append(station)

flag2=1

if flag2:

break

else:

print("没有这个车站!")

print("请重新输入!")

if len(result2)==1:

result2Id=result2[0]["id"]

print("你输入的目的车站是%s,对应的车站ID是%s"%(result2[0]["cname"],result2Id))

else:

print("你输入的条件比较模糊,请在以下站中进行选择:")

for i in range(len(result2)):

print(i+1,result2[i]["cname"],result2[i]["id"])

sel2=int(input("你的选择:"))-1

result2Id=result2[sel2]["id"]

print("你输入的目的车站是%s,对应的车站ID是%s"%(result2[sel]["cname"],result2Id))

#生成一条带查询的url(url在浏览器开发者模式查找)

qurl="https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2019-01-14&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT"

print(qurl %(resultId,result2Id))

python数字对应车站_python爬虫查询车站信息相关推荐

  1. python高考查分_python爬虫 查询全国大学专业的录取情况

    估计很多人在填报高考自愿的时候都会难以选择学校,有自己心仪的专业,但是在网上搜了半天也不能确定填哪一所学校.如果填了录取分数线低的,那将会浪费很多分数,表示有点遗憾.如果没有录取上,那就更遗憾了- 在 ...

  2. python爬取物流信息_python爬虫快递查询系统(源码)

    import requests import json def get_express_type(postid): '''根据快递单号来智能判断快递类型''' url = 'http://www.ku ...

  3. python爬虫找工作怎么找_python爬虫判断招聘信息是否存在的实例代码

    在找工作的时候,我们会选择上网查询招聘的信息,或者是通过一些招聘会进行现场面试.但由于信息更新不及时,有一些岗位会出现下架的情况,如果我们不注意的话,可能就扑了空.在时间上耽误了不说,面试的信息也会受 ...

  4. python编程理论篇_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  5. python获取数据库列名_python sqlite3 查询操作及获取对应查询结果的列名

    记录查询操作及获取查询结果列字段的方法 1.sqlite3 中获取所有表名及各表字段名的操作方法 SQLite 数据库中有一个特殊的表叫 sqlite_master,sqlite_master 的结构 ...

  6. python数字转字符串_python中如何将数字转字符串

    python数字转字符串的实现方法:1.使用格式化字符串,语句如"tt=322 tem='%d' %tt":2.通过"str(5)"方法实现转换. 推荐:< ...

  7. python爬携程_python爬虫-携程-eleven参数

    携程-eleven分析 一.eleven的位置 通过对旁边栈的分析,它是在另一个js文件中调用的.那个js文件是一个自调用的函数,所以我们可以直接copy下来,用浏览器执行看看 执行运行是会报错的,u ...

  8. python 12306抢票_Python爬虫实战:12306抢票开源!

    今天就和大家一起来讨论一下python实现12306余票查询(pycharm+python3.7),一起来感受一下python爬虫的简单实践 我们说先在浏览器中打开开发者工具(F12),尝试一次余票的 ...

  9. python获取网站代码_python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

最新文章

  1. Go 分布式学习利器(9)-- Go语言 结构体的行为定义和实现
  2. 查看磁盘空间,清理缓存
  3. DAVINCI DM365-368中 linux-2.6.32的移植
  4. python中for循环是可以带else的
  5. java 语法 —— 数组
  6. usbserialconverter驱动找不到_驱动到底是什么?别再用精灵管家无脑装驱动了
  7. vue 工作项目中 实现消息列表的 全选,反选,删除功能
  8. android调用web接口,Android调用WebService系列之请求调用
  9. 「代码随想录」343. 整数拆分【动态规划】详解!
  10. android笔记集one
  11. C++--最大公约数和最小公倍数
  12. python 与_Python爬取拉勾网python职位数据
  13. oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)
  14. larval中sessions的使用
  15. 并行网络测试软件,并行程序测试
  16. electron-bulider 12 打包出现的问题
  17. MATLAB regress命令
  18. VRChat火了,但VR社交还没迎来最好的时代
  19. educoder算法设计与分析 实验一扩展 袋鼠过河问题
  20. MT4外汇平台哪家靠谱?靠谱的MT4外汇平台有什么特征?

热门文章

  1. python for循环n次_Python入门10 —— for循环
  2. php设计模式原型模式,原型模式_设计模式_设计模式之原型模式 - Lane Blog
  3. linux重定向文件被修改后,Linux服务器修改.htaccess文件实现301重定向
  4. 操作系统中的死锁_操作系统中的死锁介绍
  5. 离散数学和组合数学什么关系_关系类型| 离散数学
  6. 量子物理 詹班 计算机,(电气系计算机系詹班)量子物理作业答案
  7. c语言字符串匹配函数index,C语言(函数)学习之index、rindex
  8. java中的Attribute类_java培训技术ModelAttribute注解修饰POJO类型的入参
  9. Java Collections CheckedCollection()方法与示例
  10. c语言用宏定义常量_使用宏定义常量以在C的数组声明中使用