python爬虫实现火车票余票查询

获取终端输入的命令行参数

例如:python3 tickets.py -dg 成都 南京 2016-10-10,包含车次类型,发站与终止站,以及日期,我们通过docopt这个包中的工具来解析命令行,如下,我们将命令行的参数存入了arguments变量当中,它是一个字典。

Usage:
    tickets [-gdtkz] <from> <to> <date>

Options:
    -h,--help   显示帮助菜单
    -g          高铁
    -d          动车
    -t          特快
    -k          快速
    -z          直达

Example:
    tickets 北京 上海 2016-10-10
    tickets -dg 成都 南京 2016-10-10
"""
from docopt import docopt

def cli():
    """command-line interface"""
    arguments = docopt(__doc__)

if __name__ == '__main__':
    cli()

由于显示的时候需要显示火车代号,所以,需要获取火车代号。在12306网站中获取了关于station信息的网页链接,例如view-source:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9101,里面包含所有车站名称和代号等信息,利用正则表达式匹配出station_name中的中文([\u4e00-\u9fa5]以及火车代号([A-Z])。

重构请求url,解析返回的json数据

当我们输入好站点信息,查询火车票时,会向服务器产生url请求链接,我们需要根据12306网站的url格式再加上命令行输入的站点信息,构造出我们自己的url,并产生请求。
服务器的响应格式为json格式,我们需要从中解析出我们需要的信息,该信息存储在json的result变量当中,解析该变量,具体如下:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值