详情查看下面的代码:

如果被识别就要添加一个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车次信息代码详解

本文地址: http://www.cppcns.com/jiaoben/python/333367.html

python爬取12306_Python爬取12306车次信息代码详解相关推荐

  1. python代码案例详解-Python实现电视里的5毛特效实例代码详解

    前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章. 我们先看看能实现什么效果,先来个正常版的,先看看原场景: 下面 ...

  2. python自然语言处理实战核心技术与算法——HMM模型代码详解

    本人初学NLP,当我看着<python自然语言处理实战核心技术与算法>书上这接近200行的代码看着有点头皮发麻,于是我读了接近一天基本把每行代码的含义给读的个七七八八,考虑到可能会有人和我 ...

  3. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

  4. python爬豆瓣电视剧_python requests库爬取豆瓣电视剧数据并保存到本地详解

    首先要做的就是去豆瓣网找对应的接口,这里就不赘述了,谷歌浏览器抓包即可,然后要做的就是分析返回的json数据的结构: https://movie.douban.com/j/search_subject ...

  5. python split函数 空格_最易懂的Python新手教程:从基础语法到代码详解

    导读:本文立足基础,讲解Python和PyCharm的安装,及Python最简单的语法基础和爬虫技术中所需的Python语法. 作者:罗攀 蒋仟 如需转载请联系华章科技 本文涉及的主要知识点如下: P ...

  6. python微信自动发消息_Python使用微信itchat接口实现查看自己微信的信息功能详解...

    Python使用微信itchat接口实现查看自己微信的信息功能详解 发布时间:2020-09-09 04:20:11 来源:脚本之家 阅读:134 本文实例讲述了Python使用微信itchat接口实 ...

  7. 从零编写60%+胜率的短线择时信号!零基础python量化投资代码详解【邢不行】

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. ​ ​ 如果有人说你是百年难得一见的量化投资天才, ...

  8. python itchat_Python使用微信itchat接口实现查看自己微信的信息功能详解

    本文实例讲述了Python使用微信itchat接口实现查看自己微信的信息功能.分享给大家供大家参考,具体如下: itchat是python的一个api,可以访问自己的微信信息,功能还蛮好玩的,可以扒取 ...

  9. 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职 ...

最新文章

  1. 【转载】OpenCV(C++ 与 Python 的比较)与 MATLAB 的比较
  2. kill -HUP 什么意思?
  3. 使用生成器创建新的迭代模式
  4. Android:屏幕自适应
  5. 非空参数校验的工具类
  6. Java面试应该准备的知识点系列一
  7. 从放弃迅雷和IDM到自己开发下载工具 1
  8. c++中的fork函数_fork函数的作用_fork函数创建进程
  9. 麟龙指标通达信指标公式源码_麟龙指标套三 麟龙特色指标 通达信主图+副图指标 贴图...
  10. Python3 文档批量助手
  11. Java实现英汉词典API初版发布在Maven
  12. 中值定理9-极值点判断
  13. vm怎么上传镜像文件到服务器,vmware怎么添加iso镜像文件-vmware添加iso镜像文件的方法 - 河东软件园...
  14. 第二章 计算机系统和计算机组成原理
  15. Vue结合vant框架实现通讯录a-z排序
  16. java POI对word中的表格动态插入固定数据,以及插入不确定数量的的数据
  17. 【数据结构与算法】栈与队列【C语言版】
  18. 期货开户公司交返怎么申请?
  19. python海龟绘图画海螺_我学会了画画100字
  20. Win32病毒入门(一)

热门文章

  1. BDD100K数据集的Jason文件转xml文件
  2. GP技术的展望——先有鸿钧后有天
  3. 路尚中国集团2020全新启程,和路尚中国集团一起追梦前行吧!
  4. Java程序优雅关闭
  5. 最新Xycms广告设计中心网站系统源码V4.7
  6. 关系型映射---Java持久化API(4)
  7. Tair介绍、使用场景、安装使用以及高可用负载均衡
  8. MyZip Pro for Mac v1.2.5 – 多线程解压缩软件
  9. 90后的年轻人喜爱社区论坛的还有吗
  10. windows服务启动路径修改方法