爬虫抓取火车票信息

# -*- coding:utf-8 -*-
import requests
import json


class trainTicketsSprider:
    def getTicketsInfo(self, purpose_codes, queryDate, from_station, to_station):
        # url = 'https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-10-22&from_station=SZQ&to_station=SHH'
        url = 'https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=%s&queryDate=%s&from_station=%s&to_station=%s' %(purpose_codes, queryDate, from_station, to_station)
        headers = {
            "Accept": "text/html,application/xhtml+xml,application/xml;",
            "Accept-Encoding": "gzip",
            "Accept-Language": "zh-CN,zh;q=0.8",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
        }
        # h = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'
        TicketSession = requests.Session()
        TicketSession.verify = False  # 关闭https验证
        TicketSession.headers = headers
        try:
            resp_json = TicketSession.get(url)
            ticketsDatas = json.loads(resp_json.text)["data"]["datas"]
            return ticketsDatas
        except Exception:
            print(Exception)


def isZero(num):
    if num == '--' or num == '':
        return '0'
    else:
        return num


def main():
    purpose_codes = 'ADULT'
    queryDate = '2016-10-22'
    from_station = 'SZQ'
    to_station = 'SHH'
    TicketSprider = trainTicketsSprider()
    res = TicketSprider.getTicketsInfo(purpose_codes, queryDate, from_station, to_station)
    for i, ticketInfo in enumerate(res):
        print("车次:%s" %ticketInfo["station_train_code"])
        print("起始站:%s" %ticketInfo["start_station_name"])
        print("目的地:%s" %ticketInfo["to_station_name"])
        print("开车时间:%s" %ticketInfo["start_time"])
        print("到达时间:%s" %ticketInfo["arrive_time"])

        if (ticketInfo["train_class_name"] == "动车"):
            print("一等座还剩:%s张票" %isZero(ticketInfo["zy_num"]))
            print("二等座还剩:%s张票" %isZero(ticketInfo["ze_num"]))
            print("软  卧还剩:%s张票" %isZero(ticketInfo["rw_num"]))
        else:
            print("硬卧还剩:%s张票" %isZero(ticketInfo["yw_num"]))
            print("硬座还剩:%s张票" %isZero(ticketInfo["yz_num"]))

        # print("无座还剩:%s张票" %isZero(ticketInfo["wz_num"]))
        # print("是否有票:%s" %ticketInfo["canWebBuy"])
        print("**********************************")

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值