爬取的url
链接: https://kyfw.12306.cn/otn/leftTicket/query.
简单描述
利用requests模块进行网页内容请求与响应,设置headers可以解决一般的反爬机制。
import requests
import json
#分析网站
url = 'https://kyfw.12306.cn/otn/leftTicket/query'
city ={
'北京北': 'VAP',
'北京东': 'BOP',
'北京': 'BJP',
'北京南': 'VNP',
'北京西': 'BXP',
'广州南': 'IZQ',
'重庆北': 'CUW',
'重庆': 'CQW',
'重庆南': 'CRW',
'广州东': 'GGQ',
'上海': 'SHH',
'上海南': 'SNH',
'上海虹桥': 'AOH'
}
t = input('enter a time:(yyyy-mm-dd):')
start = input('enter a start city:')
start = city[start]
end = input('enter a end city:')
end = city[end]
params = {
'leftTicketDTO.train_date': t,
'leftTicketDTO.from_station': start,
'leftTicketDTO.to_station': end,
'purpose_codes': 'ADULT'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=wf',
'Cookie': '_uab_collina=163077338623568853680117; JSESSIONID=2F34A4A8F36A2664D16E3D530A8C409A; BIGipServerotn=1089470986.50210.0000; RAIL_EXPIRATION=1631049192249; RAIL_DEVICEID=M8sa8Kq70vKSYxrnRGUb8LfnYvheI7g5wspaDkGezBtmLQJ_J_T0ge43HEBOCkMR8UTqXHEYRROGvApGh3x23cvHptlSQogWfOEaf7N2oaX6H-GTrXXK-qa-lhUkTxo8oWuXhl8Ctb5eN0LM5uu96xs9AN4Lro1_; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; BIGipServerpool_passport=199492106.50215.0000; route=9036359bb8a8a461c164a04f8f50b252; _jc_save_fromStation=%u4E0A%u6D77%2CSHH; _jc_save_toStation=%u5317%u4EAC%2CBJP; _jc_save_fromDate=2021-09-05; _jc_save_toDate=2021-09-05; _jc_save_wfdc_flag=wf'
}
response = requests.get(url,headers=headers,params=params)#.json是获取网页相应的数据,而json.loads是字符串的一个转换
data = json.loads(response.content)
for i in data['data']['result']:
temp_list = i.split('|')
# print(temp_list)
#无座 26
#软座 23
#硬座 29
#硬卧 28
if temp_list[29] == '有':
print('硬座有票','车次-->',temp_list[3])
else:
print('硬座无票','车次-->',temp_list[3])
一起加油!
下一期更新12306官网抢票。