火车票查询系统(一)——利用python实现监控12306余票查询

最近春运高峰,本人从12月开始买过年回家的火车票,然鹅~现实总是那么残酷,放票时间记不住,要么就是不能实时盯着刷票,外面的软件也不知道靠不靠谱,反正是没买到票,所以一怒之下,自己做一个12306余票查询系统,可以实现以下一些功能:

1. 设置目标位置进行查询余票
2. 通过设定条件监控到余票后进行12306账号登录
3. 12306登录及图片识别(自动登录功能)
4. 自动下单功能
5. 邮件通知付款功能

ok,整个博客内容包括以上代码实现,我们按照惯例,循序渐进,先讲第一篇【实现12306余票查询】

-----------------------------------------------------我是分割线、

第一步:查看12306查询接口
在这里插入图片描述
通过截图我们可以看到,查询接口是:

https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2020-01-16&leftTicketDTO.from_station=SZQ&leftTicketDTO.to_station=SHH&purpose_codes=ADULT

https://kyfw.12306.cn/otn/leftTicket/queryZ + data + from_station + to_station + purpose_codes
这样一个连接拼接而成,那我们要做的就是按照他这种格式,传入参数进去即可。

第一步:定义类并对接口参数进行设置和组装

class LeftTicketDTO:
    """
    查询余票参数信息
    """
    def __init__(self, train_date=datetime.date.today().strftime('%Y-%m-%d'), from_station='SZQ',
                 to_station='GZQ', purpose_codes='ADULT'):
        self.train_date = train_date
        self.from_station = from_station
        self.to_station = to_station
        self.purpose_codes = purpose_codes

    def encode_url_para(self):
        paras = ['train_date=' + self.train_date,
                 'from_station=' + self.from_station,
                 'to_station=' + self.to_station]
        p = '&'.join(['leftTicketDTO.' + v for v in paras])
        return p + '&purpose_codes=' + self.purpose_codes

第二步:我们把所需要的车次信息捞出来,进行初始化

class Train:
    """
    车次信息
    """
    def __init__(self, item):
        """
        使用列表顺序初始化火车信息
        :param item: 12306火车信息列表
        :return:
        """
        # self.field_0 = item[0]
        # 状态
        self.status = item[1]
        # 车票号
        self.train_no = item[2]
        # 车次
        self.station_train_code = item[3]
        # 起始站代号
        self.start_station_code = item[4]
        # 终点站代号
        self.end_station_code = item[5]
        # 出发站代号
        self.from_station_code = item[6]
        # 到达站代号
        self.to_station_code = item[7]
        # 出发时间
        self.start_time = item[8]
        # 到达时间
        self.arrive_time = item[9]
        # 运行时长
        self.run_time = item[10]
        # 是否可买
        self.can_buy = item[11]
        self.yp_info = item[12]
        # 出发日期
        self.start_train_date = item[13]
        self.train_seat_feature = item[14]
        self.location_code = item[15]
        self.from_station_no = item[16]
        self.to_station_no = item[17]
        self.is_support_card = item[18]
        self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值