獲取12306所需剩餘的票

1、登陸官網,找到所需票頁面:

2、按F12然後點擊查詢:

3、先安裝requests 第三方庫:

  #pip install requests

4、寫入以下代碼:

第一版原始:

 1 #!/usr/bin/env python3
 2 # -*- coding: UTF-8 -*-
 3 #version: v1.1.1
 4 import requests
 5 
 6 #獲取12306官網的數據url
 7 def pacong():
 8     reque = requests.get('https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=2019-03-09&leftTicketDTO.from_station=HZH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT')
 9 
10     return reque.json()['data']['result']
11 
12 for i in pacong():
13     tem_list = i.split('|')
14 
15     if tem_list[30] != '' and tem_list[30] != '':
16         print("", tem_list[3], "二等座	", "出发时间:", tem_list[8], "到达时间:	", tem_list[9], tem_list[30])
17     else:
18         print("")
19 """
20     #查看需要的信息所在的下標
21     print (tem_list)
22     p = 0
23     for n in tem_list:
24         print (p, n)
25         p += 1
26 """

5、結果:

第二版改进:

 1 #!/usr/bin/env python3
 2 # -*- coding: UTF-8 -*-
 3 
 4 """
 5 version: v1.1.2
 6 author: 辉_少
 7 """
 8 
 9 import requests
10 import datetime
11 
12 #TIME = datetime.datetime.now().strftime('%Y-%m-%d')
13 
14 TIME = input('请输入要查询的时间,格式为 年-月-日(2019-03-09):')
15 URL = ('https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=HZH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT'%TIME)
16 #print (TIME)
17 #print (URL)
18 
19 #獲取12306官網的數據url
20 def pacong():
21     reque = requests.get(URL)
22 
23     return reque.json()['data']['result']
24 
25 for i in pacong():
26     tem_list = i.split('|')
27 
28     if tem_list[30] != '' and tem_list[30] != '':
29         print("", tem_list[3], "二等座	", "出发时间:", tem_list[8], "到达时间:	", tem_list[9], tem_list[30])
30     else:
31         print("")
32 """
33     #查看需要的信息所在的下標
34     print (tem_list)
35     p = 0
36     for n in tem_list:
37         print (p, n)
38         p += 1
39 """

 结果图:

第三版改进:

 1 #!/usr/bin/env python3
 2 # -*- coding: UTF-8 -*-
 3 
 4 """
 5 version: v1.1.3
 6 author: 辉_少
 7 功能:
 8     1、支持了手动输入想到达的城市(暂只支持热门城市,其它城市还在录入)
 9 """
10 
11 import requests
12 
13 
14 TIME = input('请输入要查询的时间,格式为 年-月-日(2019-03-09):')
15 STA_city = input("""请输入要出发的城市,暂时只支持热门城市,请谅解!
16 格式(北京:BJP 杭州:HZH 上海:SHH 天津:TJP 深圳:SZQ
17 济南:JNK 重庆:CQW 长沙:CSQ 长春:CCT 成都:CDW
18 福州:FZS 广州:GZQ 贵阳:GIW 呼和浩特:HHC 哈尔滨:HBB
19 合肥:HFH 海口:VUQ 昆明:KMM 拉萨:LSO 兰州:LZJ
20 南宁:NNZ 南京:NJH 南昌:NCG 沈阳:SYT 石家庄:SJP
21 太原:TYV 乌鲁木齐南:WMR 武汉:WHN 西宁:XNO 西安:XAY
22 银川:YIJ 郑州:ZZF 深圳:SZQ 厦门:XMS):""")
23 
24 TO_STA_city = input("""请输入要到达的城市,暂时只支持热门城市,请谅解!
25 格式(北京:BJP 杭州:HZH 上海:SHH 天津:TJP 深圳:SZQ
26 济南:JNK 重庆:CQW 长沙:CSQ 长春:CCT 成都:CDW
27 福州:FZS 广州:GZQ 贵阳:GIW 呼和浩特:HHC 哈尔滨:HBB
28 合肥:HFH 海口:VUQ 昆明:KMM 拉萨:LSO 兰州:LZJ
29 南宁:NNZ 南京:NJH 南昌:NCG 沈阳:SYT 石家庄:SJP
30 太原:TYV 乌鲁木齐南:WMR 武汉:WHN 西宁:XNO 西安:XAY
31 银川:YIJ 郑州:ZZF 深圳:SZQ 厦门:XMS):""")
32 
33 URL = ('https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT'%(TIME,STA_city,TO_STA_city))
34 #print (TIME)
35 #print (STA_city)
36 #print (TO_STA_city)
37 #print (URL)
38 
39 #獲取12306官網的數據url
40 def pacong():
41     reque = requests.get(URL)
42 
43     return reque.json()['data']['result']
44 
45 for i in pacong():
46     tem_list = i.split('|')
47 
48     if tem_list[30] != '' and tem_list[30] != '':
49         print("", tem_list[3], "二等座	", "出发时间:", tem_list[8], "到达时间:	", tem_list[9], tem_list[30])
50     else:
51         print("")
52 
53 """
54     #查看需要的信息所在的下標
55     print (tem_list)
56     p = 0
57     for n in tem_list:
58         print (p, n)
59         p += 1
60 """

结果图:

原文地址:https://www.cnblogs.com/hui-shao/p/python_12306.html