Python爬取12306车次信息代码详解


Posted in Python onAugust 12, 2020

详情查看下面的代码:

如果被识别就要添加一个cookie如果没有被识别的话就要一个user—agent就好了。如果出现乱码就设置编码格式为utf-8

#静态的数据一般在elements中(复制文字到sources按ctrl+f搜索。找到的为静态),而动态去network中去寻找相关的信息
import requests
import re
def send_request():
  headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'
        ,'Cookie':'_uab_collina=159618052151589201474313; JSESSIONID=D33C89D8BEC6A692C79CFA69FC0B0D29; BIGipServerotn=233832970.24610.0000; BIGipServerpool_passport=216859146.50215.0000; RAIL_EXPIRATION=1596443951465; RAIL_DEVICEID=nMo94O2Z21cXLblW7otLoxUZ_LP9Q01PYj_I89OqU6MqjxyX9814Jc3CH5TNwgBVJqnBaBG8OGiBWo2QtNcu5wVu-asNk6YLa49g0fMwVp03XFJQ-GkhHYHcqIgUd-nqQB_VEdWH1Om_D2yAgIu8QcEavt02pmH5; route=c5c62a339e7744272a54643b3be5bf64; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u5929%u6D25%2CTJP; _jc_save_fromDate=2020-07-31; _jc_save_toDate=2020-07-31; _jc_save_wfdc_flag=dc'}#创建头部信息
  url='https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2020-07-31&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=TJP&purpose_codes=ADULT'
  #设置编码格式。防止乱码
  resp=requests.get(url,headers=headers)
  resp.encoding='utf-8'
  return resp

#解析数据
#{}是字典。根据key获取值。
def parse_json(resp,city):
  json_ticket=resp.json()#将相应的数据转换为json
  data_list=json_ticket['data']['result']#得到车次的列表
  lst=[]#列表
  for item in data_list:
    #遍历车次信息进行分割
    d=item.split('|')
    lst.append([d[3],city[d[6]],city[d[7]],d[31],d[30],d[13]])
  return lst
'''
d[3]从列表中获取索引为3的表示车次
d[6]查询起始站
d[7]查询到达站
d[31]一等座
d[30]表示二等座
d[13]表示出行时间'''
#获得station_name的信息
def get_city():
  url='https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9151'
  headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
  resp=requests.get(url,headers=headers)
  resp.encoding='utf-8'
  #进行数据的提取(只要一部分)
  stations=re.findall('([\u4e00-\u9fa5]+)\|([A-Z]+)',resp.text)
  #将列表进行转换为字典
  stations_data=dict(stations)
  #key与value进行互换
  station_d={}#空字典。用于完成上述操作
  for item in stations_data:
    station_d[stations_data[item]]=item
  #print(station_d)
  return station_d

def start():
  lst=parse_json(send_request(),get_city())
  #进行数据的筛选(得到有效的数据)
  for i in lst:
    if i[3]!='无' and i[3]!='':
      print(i)
if __name__=='__main__':
  start() #开始

运行的截图:

Python爬取12306车次信息代码详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
python禁用键鼠与提权代码实例
Aug 16 Python
python3.6生成器yield用法实例分析
Aug 23 Python
解决python replace函数替换无效问题
Jan 18 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 Python
python实现双向链表原理
May 25 Python
Python读取xlsx数据生成图标代码实例
Aug 12 #Python
Idea安装python显示无SDK问题解决方案
Aug 12 #Python
Python selenium如何打包静态网页并下载
Aug 12 #Python
Python selenium爬取微信公众号文章代码详解
Aug 12 #Python
PyQt5 QDockWidget控件应用详解
Aug 12 #Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 #Python
基于python requests selenium爬取excel vba过程解析
Aug 12 #Python
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
php生成EXCEL的东东
2006/10/09 PHP
php 中文和编码判断代码
2010/05/16 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
window.print打印指定div实例代码
2013/12/13 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
js获取Get值的方法
2016/09/29 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
让python json encode datetime类型
2010/12/28 Python
python批量导出导入MySQL用户的方法
2013/11/15 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Python读取yaml文件的详细教程
2020/07/21 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
学生党员一帮一活动总结
2014/07/08 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
加强作风建设心得体会
2014/10/22 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
写景作文评语集锦
2014/12/25 职场文书
道士塔读书笔记
2015/06/30 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python