python爬虫12306查票
以查询某日的从上海到北京的高铁票为例(此例只查票,不购票,只作为入门级练习案例。)首先打开12306进行页面分析车票的数据,都是动态加载的。动态加载的数据存在Fetch/XHR的Preview中。如图我们可以从中看到我们需要的车票信息。从headers中找到该页面的url。经测试,还不足以得到预期的结果,遂再在代码中加上cookie。import requestsdef query():heade
·
以查询某日的从上海到北京的高铁票为例(此例只查票,不购票,只作为入门级练习案例。)
首先打开12306进行页面分析
车票的数据,都是动态加载的,动态加载的数据不在网页源码中。可以从Fetch/XHR的Preview中找到。
如图我们可以从中看到我们需要的车票信息。
要发起请求的url,不一定是上方的url。而是找到目标信息后,该信息对应的url。
从headers中找到该页面的url。经测试,还不足以得到预期的结果,遂再在代码中加上cookie。
import requests
def query():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'Cookie': '_uab_collina=163781789801657648754614; JSESSIONID=17D8DC27974BF574F488C751D613020D; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u957F%u6C99%2CCSQ; _jc_save_fromDate=2021-11-29; _jc_save_toDate=2021-11-25; _jc_save_wfdc_flag=dc; RAIL_EXPIRATION=1638084218471; RAIL_DEVICEID=GjoD0SgmuOrn8I5Th6sUW3ladtrYirj_WuUcpoeRWAOdZLc63TmPOpT1z1CkycXEQYSSIJSyipw1YGROKouZDXPDwH5rr_S0Dctws6kdtfdau9QTrufBKnxOwEWaGsS0L8y3sluymB5TlCqIAWN3nNP-jxbLyUgg; BIGipServerpassport=887619850.50215.0000; route=495c805987d0f5c8c84b14f60212447d; BIGipServerotn=2547450122.24610.0000; BIGipServerportal=3067347210.17695.0000'
}
url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2021-11-29&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT'
response = requests.get(url, headers=headers)
# print(response.content.decode('utf-8'))
# print(response.json()['data']['result'])
return response.json()['data']['result']
# 解析数据
for i in query():
li = i.split('|')
if li[32] != '无' and li[32] != '':
print(f'{li[3]}有票的,{li[32]}')
else:
print(f'{li[3]}无票')
代码运行结果如下所示(部分):
更多推荐
已为社区贡献5条内容
所有评论(0)