Giter VIP home page Giter VIP logo

12306-train-ticket's Introduction

12306-Train-Ticket

Get train ticket information via Python crawler

12306火车票爬取

特别说明

本次案例根据 《零基础学 Python》修改而来,在原案例中,由于书本原案例是 2018 年编写的代码,随着 12306 的迭代更新,就的爬取方式不在适用,本次主要修改的是 query函数,修改了爬取方式,界面布局等

Pycharm 配置 Qt

Pycharm 下载

Pycharm 点击此处进入下载官网 在这里插入图片描述 Pycharm 提供专业版(Professional)与社区版(Community),社区版免费且开源,专业版具有 30 天试用期,需要付费购买,可以使用支付宝支付,我使用的是专业版 pycharm-professional-2020.1.1 在这里插入图片描述

Qt 安装与配置

通过如下命令安装

!pip install PyQt5

注:我是用的是 Anaconda 环境配置,下面的路径选择根据自己电脑路径修改

配置三个扩展工具 External Tools,依次点击 File→Settings→External Tools,点击+号,三个工具的配置输入如下: Qt Designer:用于绘制界面

属性 参数
Name Qt Designer(自己取名字)
Description Create Qt UI(描述信息,可以不写)
Program E:\Anaconda3\Library\bin\designer.exe(根据自己Python环境填写路径)
Arguments
Working directory E:\Anaconda3\Library\bin

在这里插入图片描述

PyUIC:将 UI 界面转换为 Python 可识别的代码

属性 参数
Name PyUIC(自己取名字)
Description UI to py file(描述信息,可以不写)
Program E:\Anaconda3\envs\tensorflow1.x\python.exe(根据自己Python环境填写路径)
Arguments -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory $FileDir$

在这里插入图片描述

qrc2py:将需要用到的资源文件转换成 Python 可识别文件(在设置 UI 时可以在 UI 转换成 py 文件后手动添加资源文件,但过程相较于繁琐,此处采取在编辑UI时直接添加资源文件)

属性 参数
Name qrc2py(自己取名字)
Description 无(描述信息,可以不写)
Program E:\Anaconda3\envs\tensorflow1.x\Scripts\pyrcc5.exe(根据自己Python环境填写路径)
Arguments $FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory $FileDir$

在这里插入图片描述 配置完成后如下 在这里插入图片描述

界面绘制

打开配置的扩展工具 Qt Designer 在这里插入图片描述 绘制 UI 界面部分需要具备基本的 Qt 操作,左边是界面布局的一些按钮,控件等,右边是调节控件的参数例如命名,大小等,界面使用了添加资源文件,所以后面需要将生成的 qrc 文件转换,界面如何绘制不再赘述,界面如图所示: 在这里插入图片描述 绘制完界面后,点击如下,将界面转换成 py 文件,UI 文件名与 py 文件名相同,都为 MianWindow 在这里插入图片描述 转换 qrc 文件类似上面转换 UI 操作,转换后需要在 MianWindow.py 中加入:

import source_rc

代码文件

主要的程序文件如下

MianWindow.py

主程序

query_request.py

解析程序

get_stations.py

站点程序

Pyinstaller 程序打包

直接运行

运行主程序如下 在这里插入图片描述

打包运行

程序打包后运行出错参见参见pygame 实现 flappybird 并打包成 exe 运行文件使用 Pygame 创建五子棋游戏解决方案 在命令行直接输入:

pyinstaller -F -w -i logo.ico main.py

打包运行效果如下: 在这里插入图片描述

(附)简单爬取操作

进入 12306 车票查询官网,输入北京到上海如下图所示 在这里插入图片描述 按 F12,再按 F5 刷新(刷新后可能需要重新点击查询),最终界面应如下,其中包含了大量信息,除了车次信息还有网页的图片文件信息等: 在这里插入图片描述 找到代表车次信息的信息条,名称大致为 query?leftTicketDTO.train_date=2020-05-17&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT(不同的时间可能不同) 在这里插入图片描述 Headers 与 Response 选项卡就是我们需要的信息,Headers 里面包含了 Cookie 文件,消息头,User-Agent 等,Response 则是包含了车次信息,里面包含站点信息,时间,座位信息以及一些反爬的混淆信息,我们需要适用正则化,字符串处理方法等提取信息,具体操作参见 query_request.py

12306-train-ticket's People

Contributors

guoquanhao avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.