欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(四)Python查询12306余票:docopt实现参数的输入-----查询任意时间任意车站余票

程序员文章站 2024-03-17 21:43:40
...

前一篇–>漂亮的输出—–prettytable和colorama的使用
      在前面的文章中我们能实现很漂亮的输出了,可是只是固定时间固定车站之间的车票信息,在本次中我们使用docopt来实现命令行的参数输入,从而查询任意时间任意两个车站的余票。
环境安装:

pip install docopt

使用docopt实现命令行的输入:

"""Train tickets query via command-line.
Usage:
    tickets <from> <to> <date>

Options:
    -h,--help        显示帮助菜单
    from             出发车站
    to               终点站
    date             出发日期

Example:
    filename 南京 北京 2016-07-01
"""
from docopt import docopt

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

在main函数中调用cli()方法并打印arguments:
(四)Python查询12306余票:docopt实现参数的输入-----查询任意时间任意车站余票
成功的通过命令行传递查询参数。

接下来我们只需要稍微修改一下resolveData函数就行了。
修改两行:

def resolveData(from_station,to_station,from_date):
    #查询链接
    url = 'https://kyfw.12306.cn/otn/leftTicket/queryO?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(from_date, stations2CODE[from_station],stations2CODE[to_station])    #获取数据

stations2CODE将输入的车站名转换成12306规定的代码。这是一个字典,具体在stationInfo.py中。

在cli()函数中调用修改后的resolveData方法并打印表格:

def cli():
    """command-line interface"""
    arguments = docopt(__doc__)
    tickets = resolveData(arguments['<from>'], arguments['<to>'], arguments['<date>'])
    display(tickets)

测试:
(四)Python查询12306余票:docopt实现参数的输入-----查询任意时间任意车站余票

下一篇–>票价的查询