首页 > 编程语言 > 详细

Python-12306车票查询

时间:2019-05-10 13:22:22      阅读:175      评论:0      收藏:0      [点我收藏+]

个人训练需要类似这种从json提取多个信息

写完后发现可以满足自己查询车票的需求,所以加上了输入查询的功能

上代码:

import requests
import json
import re

url = https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2019-05-09&leftTicketDTO.from_station=CQW&leftTicketDTO.to_station=GIW&purpose_codes=ADULT

# 获取地名对应的代号
def get_name(name,headers):
    url = https://www.12306.cn/index/script/core/common/station_name_v10028.js
    response = requests.get(url,headers = headers)
    res = re.findall(r@.+?\|(.+?)\|(.+?)\|,response.text)
    for i in res:
        if i[0] == name:
            return i[1]
    return None

# 将信息中的‘ ‘值转化为网页类似的那种‘--‘
def clear_info(list):
    for i in range(len(list)):
        if list[i] == ‘‘:
            list[i] = --
    return list

# 获取网页信息
def get_html(beg_name,st_name,time):
    url = https://kyfw.12306.cn/otn/leftTicket/query

    params = {
        leftTicketDTO.train_date: time,
        leftTicketDTO.from_station: beg_name,
        leftTicketDTO.to_station: st_name,
        purpose_codes: ADULT
    }

    response = requests.get(url, headers=headers, params=params)
    return response.text

headers = {
    Cookie: JSESSIONID=696CD9155D2B8006B7881933C8CA25E8; _jc_save_wfdc_flag=dc; BIGipServerotn=921698826.50210.0000; RAIL_EXPIRATION=1557715740051; RAIL_DEVICEID=miUOG_8cGgit72oTyiFjYm7fe2HzLle69Ud1Pf7HgG-T9d8t7RkC1iBe3m0aLgz8Vtb-DOp-rsEWVoxAazt4euSyRznwBRGpnLLdja51hvo2cFeIGTK5ON8mMLldB_ZH3Hx3yXe5OCL_hcON4XpV3bmQt4VYNnd4; BIGipServerpool_passport=267190794.50215.0000; route=6f50b51faa11b987e576cdb301e545c4; _jc_save_fromDate=2019-05-09; _jc_save_toDate=2019-05-09; SL_GWPT_Show_Hide_tmp=1; SL_wptGlobTipTmp=1; _jc_save_fromStation=%u91CD%u5E86%2CCQW; _jc_save_toStation=%u8D35%u9633%2CGIW,
    Host: kyfw.12306.cn,
    If-Modified-Since: 0,
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36,
    X-Requested-With: XMLHttpRequest
}


beg_name = input("请输入出发点:")
st_name = input("请输入到站点:")
time = input("请输入启程时间:")

beg_name = get_name(beg_name,headers)
st_name = get_name(st_name,headers)
if beg_name == None or beg_name == None:
    blo_ch = False
    print("输入地点有错")
if blo_ch:
    # 访问网站并处理json数据
    response = get_html(beg_name, st_name, time)
    response = json.loads(response)
    adder = response[data][map]
    res = response[data][result]

    # 将需要的信息提出来
    for item in res:
        info = []
        item = item.split(|)
        info.append(item[3])
        info.append(adder[item[6]])
        info.append(adder[item[7]])
        info.append(item[8])
        info.append(item[9])
        info.append(item[10])
        info.append(item[32])
        info.append(item[31])
        info.append(item[30])
        info.append(item[23])
        info.append(item[28])
        info.append(item[29])
        info.append(item[26])
        last_info = clear_info(info)
        print(last_info)

代码简单  没事练练手

Python-12306车票查询

原文:https://www.cnblogs.com/MaGnet/p/10843819.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!