简介
本实验主要是抓取2020-5-5成都东到西安北所有车次的信息,12306网站设置了反爬机制,要构造Headers才能获取数据,本文对获取的数据先进行了split()分割,将每趟列车的信息分割出来,然后通过与网站数据的对比找出哪些是我们所需要的信息(比如:二等座余票信息对应的是哪个数据等)。本实验比较简单,非常的初级,github上有非常专业的自动抢票买票的源代码。
# Created by 老刘 on 2020/5/4
#导入相关库
import requests
import json
import time
def getdata():
#headers要添加User-Agent和'Cookie'信息,否则不能获得数据headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36','Cookie':'JSESSIONID=8E5621C15B1ED1C5F8E78FB5081B31FB; BIGipServerotn=2614558986.64545.0000; RAIL_EXPIRATION=1588891771278; RAIL_DEVICEID=aJhSjAb-bZEmRmHh8adg6s0HUKFRBh7k-Z9SvjgKaIcvft2BEJynL_y_J5kY2o8Q3oAdBLxeoVfq1vCClISbBbcb9UWhhNuPkA0kNhD7KdDuvZaX5Dt7atQFkm9qhp3D579g7ed-TPN3esRBGUH_8Bf1Mu5czBiY; BIGipServerpassport=820510986.50215.0000; route=6f50b51faa11b987e576cdb301e545c4; _jc_save_fromStation=%u6210%u90FD%u4E1C%2CICW; _jc_save_toStation=%u897F%u5B89%u5317%2CEAY; _jc_save_fromDate=2020-05-05; _jc_save_toDate=2020-05-04; _jc_save_wfdc_flag=dc'}url='https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2020-05-05&leftTicketDTO.from_station=ICW&leftTicketDTO.to_station=EAY&purpose_codes=ADULT'response=requests.get(url,headers=headers)#print(response.text)#在开发者工具中找到余票信息在['data']['result']下return response.json()['data']['result']
def main():for i in getdata():# 分割数据temp_list = i.split('|')# print(temp_list)num = 0print('%s车次:%s 出发时间:%s 到达时间:%s 一等座软卧:%s 二等座:%s 一等座:%s' % (temp_list[1], temp_list[3], temp_list[8], temp_list[9], temp_list[23], temp_list[30], temp_list[31]))num += 1
if __name__ == '__main__':
#间隔5秒运行程序while True:main()time.sleep(5)
运行结果: