python爬取12306_python爬取12306火车车次信息
#-*- 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火车车次信息相关推荐
- python 12306查询不到车次_python爬取12306火车车次信息
#-*- coding:utf-8 -*- importrequestsimportreimportjson#关闭https证书验证警告 requests.packages.urllib3.disab ...
- python火车票查询工具tkinter_python 3.6 tkinter+urllib+json实现火车车次信息查询功能...
一.概述 妹子工作时需要大量地查询火车车次至南京的信息,包括该车次到达站(南京站or南京南站).到达时间.出发时间等,然后根据这些信息做下一步工作. 版本结束,趁着间歇期,帮她弄了个简易的批量查询工具 ...
- Python爬虫——12306网站车次信息
Python爬虫--12306网站车次信息 相信每一个人都听说过谷歌.百度等浏览器,我们在在输入栏中输入我们想要的关键字,便会出现与我们输入关键字有关的网页.那么这些数据时是怎么来的呢?其实这跟网络爬 ...
- C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法
C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...
- java点击车次显示详情_Web项目专项训练——火车车次信息管理系统代码分享
题目:火车车次信息管理 一.语言和环境 A.实现语言 Java B.环境要求 JDK1.7.Eclipse.Tomcat7.*.mysql 二.功能要求 使用JSP+Servlet实现火车车次信息管理 ...
- Web项目专项训练——火车车次信息管理系统代码分享
题目:火车车次信息管理 一.语言和环境 A.实现语言 Java B.环境要求 JDK1.7.Eclipse.Tomcat7.*.mysql 二.功能要求 使用JSP+Servlet实现火车车次信息管理 ...
- python爬取12306_Python爬取12306车次信息代码详解
详情查看下面的代码: 如果被识别就要添加一个cookie如果没有被识别的话就要一个user-agent就好了.如果出现乱码就设置编码格式为utf-8 #静态的数据一般在elements中(复制文字到s ...
- python爬取12306_python爬取12306的车次信息
#静态的数据一般在elements中(复制文字到sources按ctrl+f搜索.找到的为静态),而动态去network中去寻找相关的信息 import requests import re def ...
- python 爬取12306网站车次信息
12306网站爬取车次信息 本想着可以做一个类似于查询详细车次信息的小工具,但是不尽人意,12306网站爬取的车次信息加密了,研究了一个下午也没有研究出其中全部的信息解密: 爬取的信息如下(举一个例子 ...
最新文章
- 摘录来自mysql 5.1的手册 关于mysql的事务处理和锁定语句
- p1209 Barn Repair
- java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器
- mysql 统计_告别硬编码,mysql 如何实现按某字段的不同取值进行统计
- Linux下恢复误删文件:思路+实践
- 剖析Docker Swarm和Mesos:是什么?如何结合?有什么优势?
- [BUG]Git Sever搭建与相关错误处理
- leetcode_53 Maximum Subarray
- 聪明好学的王强用计算机设计了,五年级语文下册期中试卷1.doc
- 专访易建科技钟忻:基于开源,但不认同强于开源
- Android学习路线图
- 【重点】commons-dbutils
- 双极型晶体管及其放大电路
- cobol-move语句
- 集成七牛云储存-上传图片Demo
- 记录-小程序720°VR(跳转H5页面实现)
- QR码编码原理二(编码)
- JavaScript正则表达式给html字符串的img标签增加style样式
- 【渝粤教育】电大中专电子商务网站建设与维护 (29)作业 题库
- iOS-开发者相关的几种证书