#-*- 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)

python爬取12306_python爬取12306火车车次信息相关推荐

  1. python 12306查询不到车次_python爬取12306火车车次信息

    #-*- coding:utf-8 -*- importrequestsimportreimportjson#关闭https证书验证警告 requests.packages.urllib3.disab ...

  2. python火车票查询工具tkinter_python 3.6 tkinter+urllib+json实现火车车次信息查询功能...

    一.概述 妹子工作时需要大量地查询火车车次至南京的信息,包括该车次到达站(南京站or南京南站).到达时间.出发时间等,然后根据这些信息做下一步工作. 版本结束,趁着间歇期,帮她弄了个简易的批量查询工具 ...

  3. Python爬虫——12306网站车次信息

    Python爬虫--12306网站车次信息 相信每一个人都听说过谷歌.百度等浏览器,我们在在输入栏中输入我们想要的关键字,便会出现与我们输入关键字有关的网页.那么这些数据时是怎么来的呢?其实这跟网络爬 ...

  4. C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法

    C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...

  5. java点击车次显示详情_Web项目专项训练——火车车次信息管理系统代码分享

    题目:火车车次信息管理 一.语言和环境 A.实现语言 Java B.环境要求 JDK1.7.Eclipse.Tomcat7.*.mysql 二.功能要求 使用JSP+Servlet实现火车车次信息管理 ...

  6. Web项目专项训练——火车车次信息管理系统代码分享

    题目:火车车次信息管理 一.语言和环境 A.实现语言 Java B.环境要求 JDK1.7.Eclipse.Tomcat7.*.mysql 二.功能要求 使用JSP+Servlet实现火车车次信息管理 ...

  7. python爬取12306_Python爬取12306车次信息代码详解

    详情查看下面的代码: 如果被识别就要添加一个cookie如果没有被识别的话就要一个user-agent就好了.如果出现乱码就设置编码格式为utf-8 #静态的数据一般在elements中(复制文字到s ...

  8. python爬取12306_python爬取12306的车次信息

    #静态的数据一般在elements中(复制文字到sources按ctrl+f搜索.找到的为静态),而动态去network中去寻找相关的信息 import requests import re def ...

  9. python 爬取12306网站车次信息

    12306网站爬取车次信息 本想着可以做一个类似于查询详细车次信息的小工具,但是不尽人意,12306网站爬取的车次信息加密了,研究了一个下午也没有研究出其中全部的信息解密: 爬取的信息如下(举一个例子 ...

最新文章

  1. 摘录来自mysql 5.1的手册 关于mysql的事务处理和锁定语句
  2. p1209 Barn Repair
  3. java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器
  4. mysql 统计_告别硬编码,mysql 如何实现按某字段的不同取值进行统计
  5. Linux下恢复误删文件:思路+实践
  6. 剖析Docker Swarm和Mesos:是什么?如何结合?有什么优势?
  7. [BUG]Git Sever搭建与相关错误处理
  8. leetcode_53 Maximum Subarray
  9. 聪明好学的王强用计算机设计了,五年级语文下册期中试卷1.doc
  10. 专访易建科技钟忻:基于开源,但不认同强于开源
  11. Android学习路线图
  12. 【重点】commons-dbutils
  13. 双极型晶体管及其放大电路
  14. cobol-move语句
  15. 集成七牛云储存-上传图片Demo
  16. 记录-小程序720°VR(跳转H5页面实现)
  17. QR码编码原理二(编码)
  18. JavaScript正则表达式给html字符串的img标签增加style样式
  19. 【渝粤教育】电大中专电子商务网站建设与维护 (29)作业 题库
  20. iOS-开发者相关的几种证书

热门文章

  1. Java好用的代码检测工具有哪些?
  2. 14. DataGridView数据控件
  3. 瑞星让偶彻底无语了!
  4. “百度大脑” 放大招了!
  5. 用python 居然可以生成 情话、藏头诗、对联?
  6. java PDF加印章
  7. 你知道大数据中的五种采集方式吗?
  8. Microsoft Office安装失败
  9. SpringCloudAlibaba:Sentinel-熔断和fegin调用
  10. SQL语句中的join用法