春节快到了,又要到一年中紧张刺激的时候了!
买票回家!
今天教大家想做一个简单好用的查票系统!

本次用到环境和模块

环境:

  • Python 3.6
  • Pycharm

模块

  • requests
  • pandas
  • json

模块在cmd里pip install +模块名 就可以安装好了

基本思路:

一. 这些数据内容是从哪里的?

通过开发者工具进行抓包分析, 分析具体的数据是从哪里的
可以通过用搜索 你想要数据内容, 会给你返回相应的数据

二. 代码实现步骤

确定需求 >>> 发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据

  1. 发送请求, 对于相应的数据包url地址发送请求
  2. 获取数据, 获取响应体json字典数据
  3. 解析数据, 直接通过键值对提取数据
  4. 数据展示

代码

import requests # 数据请求模块 pip install requests
import pprint # 格式化输出的模块
import pandas as pd   # pip install pandas
import json
f = open('city.json', mode='r', encoding='utf-8')
text = f.read()
city_json = json.loads(text)
# dit = dict(text)
# <class 'str'>   字符串转字典 json
while True:from_station = input('请输入出发的城市: ')to_station = input('请输入目的城市: ')# date = input('请输入查询时间(格式: 2021-09-10):  ')# print(city_json[from_station])# print(city_json[to_station])# print(type(city_json))# 模块安装# win + R 输入cmd pip install requests# 发送请求# url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2021-09-11&leftTicketDTO.from_station=CSQ&leftTicketDTO.to_station=LZZ&purpose_codes=ADULT'url = 'https://kyfw.12306.cn/otn/leftTicket/query'# 字典的形式 ? 非贪婪匹配data = {'leftTicketDTO.train_date': '2021-09-11','leftTicketDTO.from_station': city_json[from_station],'leftTicketDTO.to_station': city_json[to_station],'purpose_codes': 'ADULT',}# 请求头是什么? 作用是什么? 为什么要加# 作用是什么 伪装浏览器 (把python代码伪装成浏览器对于发送请求)# headers  User-Agent: 浏览器基本信息# Cookie 用户信息  host 域名 referer 防盗链# 比如 笔趣阁 表情包网站 你都可以不加headers (对某些网站)headers = {'Cookie': '*','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}# <Response [200]> 返回的是响应体对象 <> 表示对象 200[状态码]表示请求成功# 请求参数 params: get请求传递的请求参数  data: post请求需要提交表单response = requests.get(url=url, params=data, headers=headers)response.encoding = response.apparent_encoding# 如果服务器给我们返回的响应体数据 {} 完整的 可以直接获取json字典数据# result = response.json()['data']['result']# pprint.pprint(response.json())# print(response.text)# 解析数据 根据键值对进行取值 根据冒号左边的内容 提取冒号右边的内容# json 和 字典 数据类型是一样的 json是一种数据存储的格式result = response.json()['data']['result']lis = []for index in result[1:]:# 字符串分割方法index_list = index.replace('有', 'Yes').replace('无', 'No').split('|') # 返回的列表 可以根据索引位置提取内容page = 0Num = index_list[3] # 车次time_1 = index_list[8] # 发车时间time_2 = index_list[9] # 到达时间prince_seat = index_list[32]  # 特等座first_class_seat = index_list[31]  # 一等座second_class = index_list[30]  # 二等座Wz = index_list[26] # 无座Yz = index_list[29]  # 硬座Rw = index_list[23] # 软卧Yw = index_list[28] # 硬卧dit = {'Num': Num,'Start': time_1,'End': time_2,'Top':prince_seat,'First':first_class_seat,'Second':second_class,'Wz': Wz,'Yz': Yz,'Rw': Rw,'Yw': Yw,}lis.append(dit)# print(dit)pd.set_option('display.max_rows', None)columns = ['Num', 'Start', 'End', 'Top', 'First', 'Second', 'Yz', 'Wz', 'Rw', 'Yw']content = pd.DataFrame(lis, columns=columns)print(content)

实现效果:

喜欢记得点赞评论哦!

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:←点击左边蓝色文字就可以跳转观看了

Python爬虫案例教程推荐:←点击左边蓝色文字就可以跳转观看了

用Python实现一个简单好用的12306查票系统相关推荐

  1. python学费12306_python【练手】12306查票

    [Python] 纯文本查看 复制代码# coding:utf-8 import json import requests import urllib3 import os import pickle ...

  2. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

  3. python游戏最简单代码-如何利用Python开发一个简单的猜数字游戏

    前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(high)&q ...

  4. python推荐系统-利用python构建一个简单的推荐系统

    摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...

  5. 怎么用python编简单游戏_用Python实现一个简单的算术游戏详解

    用Python实现一个简单的算术游戏 #!/usr/bin/env python from operator import add, sub from random import randint, c ...

  6. 【Python】如何用python做一个简单的输入输出交互界面?

    看到知乎上有人在问,如何使用Python做一个简单的输入输出交互界面? 交互界面就涉及到GUI编程. Python有很多GUI框架,功能大同小异. 其中比较出名的有「PyQT」.**wxPython. ...

  7. 基于python的系统构建_利用python构建一个简单的推荐系统

    摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...

  8. java调python 监控_利用Python实现一个简单的系统监控图表

    作为运维人员,想必大家肯定都做过这样的事情:为了监控系统资源使用情况,开了若干个窗口,来回切换看输出: 只要我切得够快,性能异常点就逃不过我的眼睛! 这个时候你要是有个监控工具自然是很好的,例如我们美 ...

  9. python代理池_用Python搭建一个简单的代理池

    其实每次爬东西的时候,特怕IP被封,所以每次都要把时间延迟设置得长一点...这次用Python搭建一个简单的代理池.获取代理IP,然后验证其有效性.不过结果好像不是很理想,为什么西刺代理的高匿代理都能 ...

最新文章

  1. Python搭建Keras CNN模型破解网站验证码
  2. CentOS部署JAVA程序、安装Tomcat以及安装导入mysql文件的方法
  3. 去除Coding4Fun中MessagePrompt的边框(Border)
  4. LeetCode-位运算-36. 只出现一次的数字
  5. GridSearchCV与RandomizedSearchCV
  6. 为技术匠人打call!用匠人精神,打造技术文化
  7. HTML5中常见的列表标签包括,介绍几个常用的HTML5标签
  8. require引入js vue_请教 关于使用require 引入vue 和公共js的问题
  9. 【Python学习】 - sklearn学习 - 评估指标precision_score的参数说明
  10. 设计模式学习总结——工厂模式
  11. 移动端 js 弹出层内容滚动的时候,不影响body的滚动条处理
  12. middleware什么意思_middleware
  13. LSTM神经网络图解
  14. android psd预览图软件,来自psd的Android Vector drawable具有空预览
  15. python断言语句的语法_Python断言教程
  16. Vue父组件传参数给子组件时,页面崩溃或者报undefined或者数据为空或者执行了两遍
  17. 杜甫水平最高的10首五律
  18. Excel添加下拉按键自动填充颜色
  19. use ida6.8 + windbg on win10
  20. 【python机器学习】——patsy的简介、安装、使用方法之详细攻略

热门文章

  1. 如何用ursina做游戏
  2. 基于Java的五子棋游戏大厅的设计与实现
  3. sieve方法c语言,用C语言实现Sieve of Atkin算法
  4. Vue中通过配置eslintrc.js文件来解决编译时出现的no-trailing-spaces、no-undef等错误
  5. 数组元素的遍历及数组常用方法-B站晓舟学习报告笔记
  6. 工商管理专业知识与实务(中级)【5】
  7. 【笔记】Armv8-A 内存管理
  8. 视频抠像怎么抠的干净?教你几种效果不错的抠像方法
  9. 语音识别之男女声分类(从一段对话中分离男声)
  10. CPU性能分析优化套路