Python基础之12306车票信息抓取案例

Python基础之12306车票信息抓取案例

注:12306上请求网址链接经常变化,需要随时检查更改(我已经修改三遍了),请求的数据也有小几率发生变动,所以也需要检查更改
2018-10-22 第四遍修改 修改url地址
2019-02-11 第五遍修改 12306抓取地址修改,重新获取地址,数据结构未变
2020-10-09 第六遍修改 12306增加cookie认证,数据结构未变
2020-12-05 第七遍修改 处理获取车站编号函数的路径问题(感谢 MikeR794 的提醒,Thanks♪(・ω・)ノ)
注2:这只是一个初学python时写的demo,功能也不健全。建议了解爬虫机制后,尝试自己采集12306数据(12306只有频率检测,算是爬虫开发中最友好的网站了)

1.准备工作

(1)安装模块

本案例需要使用Python内置模块之外的docopt模块、requests模块、prettytable模块
安装方法:使用管理员身份打开控制台,使用指令 pip install 模块名分别安装三个模块


(2)简易教程

docopt:

docopt:用来帮助开发人员定义对应的终端运行指令集,当开发人员通过终端输入执行命令时,此时docopt方法会自动根据指令集完成对终端指令的匹配,之后将匹配结果以字典的形式返回给开发人员
Usage:指令管理,用户输入后系统会从上到下依次匹配
Options:指令注释,可省略
-abc:代表选择项,最终对应的结果是True或False
<from>:代表参数from,用来接收终端输入的参数数据
[]:代表里面的内容是可选的
():代表里面的内容是必须的
a|b:代表ab两种内容选择一种输入
<from >...:此时代表可变参数,该参数对应的数据是一个列表,可以用来接受任意多个参数数据

"""DOC OPT
Usage:
    doc_opt.py start
    doc_opt.py [-gdkzt] <from> <to> <time>


Options:
    -g      高铁
    -d      动车
    -k      普快
    -z      直达
    -t      特快
"""

注意:
1. 指令前必须加入该文件名称
2. Usage和Option间应加入回车,否则不会执行指令
3. 该段文字写在文件最上部


prettytable

prettytable用于将数据整理成表格输出到控制台,只适用于控制台输出

# 创建表格对象
table = PrettyTable(['name', 'age', 'sex', 'birth'])
# 添加行
table.add_row(['小呆呆', 20, '男', '2018-9-18'])
# 显示
print(table)

prettytable中有很多属性,在此不再一一讲解,有兴趣可以百度查找


requests

requests:完成网络请求的模块
网络请求:服务器和客户端进行数据交互的过程
网络请求需要两部分内容
网址(url):用来帮助开发人员找到指定的服务器
参数:用来告知服务器需要提供的服务内容,可以保证服务器能够提供精准的服务

在网络请求中有两个非常流行的请求方式,分别是:GET和POST
GET:客户端向服务器发起请求同时把服务器需要的数据一并传给服务器。因此GET请求的网址和参数通过"?"组合在一起,此种方式不利于数据的安全。同时GET请求只能向服务器发送最多288个字节的数据,因此数据传输量比较小。综上GET一般用来向服务器获取数据
POST:客户端向服务器发去链接请求,链接成功

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值