(四)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:
成功的通过命令行传递查询参数。
接下来我们只需要稍微修改一下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)
测试:
上一篇: CSP-202006-2-稀疏向量