可单独获取城市到城市的车次、出发时间、耗时时间、到达时间 ,以及余票信息。修改最后三行的字符串运行使用。或修改为for循环实现批量获取。代码网络获取并加以修改。

import requests
import re#关闭https证书验证警告
requests.packages.urllib3.disable_warnings()
# 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)
import requests
import json# 关闭https证书验证警告
requests.packages.urllib3.disable_warnings()# 城市名代码查询字典
# key:城市名 value:城市代码
#from .stations import stations_dict
# 反转k,v形成新的字典
code_dict = {v: k for k, v in station.items()}
stations_dict=station
def get_query_url(text):'''返回调用api的url链接'''# 解析参数 aggs[0]里是固定字符串:车票查询 用于匹配公众号接口args = str(text).split(' ')try:date = args[1] from_station_name = args[2] to_station_name = args[3]from_station=stations_dict[from_station_name]to_station = stations_dict[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)
#    print(url)return urldef query_train_info(url):'''查询火车票信息:返回 信息查询列表'''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 = code_dict[from_station_code]# 终点站to_station_code = data_list[7]to_station_name = code_dict[to_station_code]# 出发时间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))info_list.append(info)return info_listexcept:return ' 输出信息有误,请重新输入'
hc=["哈尔滨","齐齐哈尔","大庆","牡丹江","绥化","长春","吉林","延吉","四平","辽源","松原"]
zsj=["广州","深圳","珠海","惠州","东莞","肇庆","佛山","中山","江门东"]
csj=["上海","南京","无锡","常州","苏州","南通","盐城","扬州","镇江","泰州","杭州","宁波","嘉兴","湖州","绍兴","金华","舟山","台州","合肥","芜湖","马鞍山","铜陵","安庆","滁州","池州","宣城"]
cy=["重庆","成都","自贡","泸州","德阳","绵阳","遂宁","内江","乐山","南充","眉山","宜宾","广安","达州","雅安","资阳"]
citys=csj
def csq(citys):for i in citys:n=0for j in citys:chaxun=r" 2018-07-20 "+i+" "+jcc=query_train_info(get_query_url(chaxun))trains=[]for eachtrain  in cc:if eachtrain[3:4]=="G" or eachtrain[3:4]=="C":huan=eachtrain.find("\n")#                print(eachtrain[3:huan]+" "+i+"-"+j)trains.append(eachtrain[3:huan])#        print(i+"-"+j+" "+str(len(trains)))n=n+len(trains)print (i+" "+str(n))chaxun=r" 2018-07-25 "+"北京"+" "+"广州"
cc=query_train_info(get_query_url(chaxun))
print (cc)

Python获取12306网站车次相关推荐

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

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

  2. python获取12306网站车票信息

    接上一篇文章用QT制作了爬票的gui程序后,接下来实现抓取相关数据展示在gui程序中.在完成功能前先说下python 爬虫经常用到的知识点 import urllib.parse #urllib库为p ...

  3. python爬虫——12306查询车次

    python爬虫--12306查询车次 使用抓包工具 中文地名转地名参数代码 使用12306提供的查询api进行查询 实现完整代码 使用抓包工具 首先登陆12306 点击查询:同时使用network抓 ...

  4. python 获取东方财富网站的数据

    python 获取东方财富网站的数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/EastWealthWebsite ...

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

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

  6. python获取12306验证码

    可获取12306验证码 # -*- coding:utf-8 -*-import timeimport requestsdef get_code_picture(local_filename):#构造 ...

  7. Python实现12306网站的余票查询

    火车站名对应的编号可以先在网上下载这个字典 https://pan.baidu.com/s/1hLb3DLB6uC6ADtXKALPBZA 可以这里下载的,整理好的py文件,可以直接使用. Code: ...

  8. python计算利率贷款_用Python获取银行网站上的存贷款利率表

    项目背景 最近在做一个利率市场化咨询的项目,主要是协助银行搭建定价体系,提供定价策略,在充分考虑产品差异.顾客需求差异.时间差异.地点差异等因素基础上制定不同的存贷款定价方法. 在制定定价策略之前, ...

  9. 获取12306的车次与单价的接口

    过去很多做聚合接口的.时间长了就不能用了.现在还有几个聚合接口.只是要收费. 有时我们只需要简单的查一下.所以还是12306接口好一点. 1. 找到车次查询界面. 2. chome浏览器.按F12进入 ...

最新文章

  1. Git教程:最详细、最傻瓜、最浅显、真正手把手教!
  2. 1016.XXE漏洞攻防学习
  3. 坑爹的SQL ISNUMERIC
  4. java selenium iframe_java selenium处理Iframe中的元素示例
  5. 平方根升余弦滚降滤波器matlab函数,平方根升余弦滚降数字滤波器的设计和实现.pdf...
  6. -字符串-搜索和替换--聚合
  7. python数组横向合并_python中合并数组的方法
  8. Task Office for mac(任务办公计划管理)
  9. Access应用实例——图书借阅管理系统
  10. multisim页面不够大_multisim小常识
  11. PX4 mixer load
  12. 童年经典,任天堂switch红白机游戏
  13. MYSQL启动失败,Can‘t create test file
  14. 用Xbrowser连接CentOS
  15. 单位内网访问外网的二种方式
  16. 【Python】Python下载及安装(windows系统)
  17. 【15W字长文】主从复制高可用Redis集群,完整包含Redis所有知识点
  18. 编码器和解码器的概念理解
  19. dw网页设计期末设计一个网页_Dreamweaver网页设计期末试卷
  20. 架构师与企业文化环境的关系

热门文章

  1. 院士齐聚智造名城 2022全球智博会嘉宾阵容公布
  2. 电涡流传感器330103-00-05-10-02-00本特利
  3. Android数据库操作
  4. 当前时间实时刷新js
  5. vue pinyin.js库
  6. ABBYY FineReader 14 中文最新版含中文补丁【OCR文字识别软件】
  7. 米联客 ZYNQ/SOC 精品教程 S02-CH15 AXI_Lite 总线详解
  8. STM32串口2初始化
  9. PHP 获取 IP 地址 函数封装
  10. 计算机毕业设计net综合型体育场馆管理系统(系统+数据库+源码+文档)