参考别人的代码,我用Python创建了一个命令行火车票查询工具12306,蛮有趣的!所以我创建了一个类似的——携程机票搜索器。

携程官网查询效果如下:

Python CLI查询效果如下:

输入出发地、目的地、航班日期,可以看到可选的航班、机场、出发和到达时间、票价等信息。

视频演示效果如下:

正在加载视频...

程序源码如下:

1.air_stations.py2.airline_ticket.py

1.air_stations.py

#1.air_stations.py 进口再 导入操作系统 导入 json 导入请求 从 pprint 导入 pprint url='http://webresource.c-ctrip.com/code/cquery/resource/address/flight/flight_new_poi_gb2312.js?CR_2017_07_18_00_00_00' 响应 = requests.get(url, verify=False) station = re.findall(u'([\u4e00-\u9fa5]+)\(([A-Z]+)\)',answer.text) 车站 = 字典(车站) pprint(车站,缩进 = 4)

2.airline_ticket.py

#2.airline_ticket.py #本程序可用于查询携程机票。请求中必须注明出发日期、出发城市和目的地城市! (仿火车订座请求程序12306) 导入查询、json、操作系统 从 docopt 导入 docopt 从 PrettyTable 导入 PrettyTable 从 colorama 导入 init,之前 从air_stations 进口站 fromCity = input('请输入您要离开的城市:') toCity = input('请输入您将到达的城市:') tripDate = input('请输入日期(例如:2017-09-27):') 初始化() TrainsCollection 类: header = '航空公司航班、机场时间、机票价格、f机场建设spokes.split() def __init__(self, Airlines_tickets): self.airline_tickets = 航空公司_tickets @财产 def 平原(自己): #通用航空公司列表没有找到,但是常见的航空公司不多,暂时用这个dict{air_company}来取吧! #如果在strs中查找不成功,会返回KeyError,表示在这个dict中没有找到目标航空公司,并显示其英文代码! air_company = {"G5": "中华航空", "9C": "春秋航空", "MU": "东方航空", "NS": "河北航空", "HU": "海南航空", "HO ”。 ":"吉祥航空","CZ":"南方航空","FM":"上海航空","ZH":"深圳航空","MF":"厦门航空","CA":"中国国际航空","KN":"中国联合航空"} 对于 self.airline_tickets 中的项目: 尝试: strs = air_company[item['alc']] 除了关键错误: strs = 项目['alc'] 补偿数据空中阿格尼 = [ Fore.BLUE + 字符串 + Fore.RESET, Fore.BLUE + item['fn'] + Fore.RESET, '\n'.join([Fore.YELLOW + item['dpbn'] + Fore.RESET, Fore.CYAN + item['apbn'] + Fore.RESET]), '\n'.join([Fore.YELLOW + item['dt'] + Fore.RESET, Fore.CYAN + 元素['at'] + Fore.RESET]), 项目['lp'], 项目['税'], ] 提供有关航空公司的数据 def Pretty_print(自我): #PrettyTable()用于将请求的航班信息表逐行打印到屏幕终端 pt = PrettyTable() pt._set_field_names(self.header) 对于 self.plains 中的 Airlines_data: 点add_row(航空公司数据) 打印(点) def 必须(): 标题= { “Cookie”:“自定义”, “用户代理”:“自定义”, } 参数= { “来自”:来自城市, '到': 城市, “日期”:旅行日期 } DCity1 = 度假村[参数['来自']] ACity1 = 度假村[参数['至']] DDate1 = 参数['日期'] url = ("http://flights.ctrip.com/domesticsearch/search/SearchFirstRouteFlights?DCity1={}&ACity1={}&SearchType=S&DDate1={}").format(DCity1,ACity1,DDate1) 尝试: r = requests.get(url, headers = headers, check=False) 除了像 e 这样的异常: 打印(代表(e)) 打印(网址) Airlines_tickets = r.json()['fis'] TrainsCollection(airline_tickets).jolie_print() 如果 __name__ == '__main__': Must()

其实这个小程序还可以扩展,比如将查询记录保存到本地电脑(txt格式,或者保存到数据库)或者,更强大的,你可以还设置了定时自动查询;还可以设置查询自动发送邮件提醒;您还可以使用Python GUI库将该程序变成桌面软件的形式。 。 。 。

学习一点编程,好处很多