用PyQt5編輯 12306車票資訊爬取程式
建立 query_request.py 檔案用於發現資料後的處理工作
from get_stations import *
import requests
'''5-7 目的地 3 車次 6 出發地 8 出發時間 9 到達時間 10 歷時 26 無坐 29 硬座
24 軟座 28 硬臥 33 動臥 23 軟臥 21 高階軟臥 30 二等座 31 一等座 32 商務座特等座
'''
data = [] # 用於儲存整理好的車次資訊
type_data = [] # 儲存車次分類後最後的資料
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
'Cookie':'_uab_collina=162044599452968647580256; JSESSIONID=ABB3D0F36AA12C3E5DAD5CD1D3CFF031; '
'RAIL_EXPIRATION=1620786883959; RAIL_DEVICEID=hu-C8-xxpDNSCuX_BiPS1CGOlxAyoXu-dncsv32QDPvmjG' 'R9Ua0AUywoyJ6FDeqRWMoixIIL24hbMf9ucn2MrHcPWjgYFJ6y6Fon9ihvKvZV8SIiGDYmZTuR-S2OLu3wyezmWPPO'
'un2B-v2BR_Q0wEYkIrBLIE8j; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u4E0'
'A%u6D77%2CSHH; _jc_save_fromDate=2021-05-08; _jc_save_toDate=2021-05-08; _jc_save_wfdc_flag='
'dc; BIGipServerpassport=988283146.50215.0000; route=495c805987d0f5c8c84b14f60212447d; BIGipS'
'erverotn=417857802.50210.0000; BIGipServerportal=3084124426.17183.0000'}
def query(date, from_station, to_station):
data.clear() # 清空資料
type_data.clear() # 清空車次分類儲存的資料
# 查詢請求地址
url = '{}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(
date, from_station, to_station)
# 傳送查詢請求
response = requests.get(url=url,headers=headers)
# # 將 json 資料轉換為字典型別,透過鍵值對取資料
result = response.json()
result = result['data']['result']
# 判斷車站檔案是否存在
if isStations() == True:
stations = eval(read()) # 讀取所有車站並轉換為 dic 型別
if len(result) != 0: # 判斷返回資料是否為空
for i in result:
# # 分割資料並新增到列表中
tmp_list = i.split('|')
# 因為查詢結果中出發站和到達站為站名的縮寫字母,所以需要在車站庫中找到對應的車站名稱
from_station = list(stations.keys())[list(stations.values()).index(tmp_list[6])]
to_station = list(stations.keys())[list(stations.values()).index(tmp_list[7])]
# 建立座位陣列,外匯跟單gendan5.com由於返回的座位資料中含有空既“”,所以將空改成 -- 這樣好識別
seat = [tmp_list[3], from_station, to_station, tmp_list[8], tmp_list[9], tmp_list[10]
, tmp_list[32], tmp_list[31], tmp_list[30], tmp_list[21]
, tmp_list[23], tmp_list[33], tmp_list[28], tmp_list[24], tmp_list[29], tmp_list[26]]
newSeat = []
# 迴圈將座位資訊中的空既“”,改成 -- 這樣好識別
for s in seat:
if s == "":
s = "--"
else:
s = s
newSeat.append(s) # 儲存新的座位資訊
data.append(newSeat)
return data # 返回整理好的車次資訊
# 獲取高鐵資訊的方法
def g_vehicle():
if len(data) != 0:
for g in data: # 迴圈所有火車資料
i = g[0].startswith('G') # 判斷車次首字母是不是高鐵
if i: # 如果是將該條資訊新增到高鐵資料中
type_data.append(g)
# 移除高鐵資訊的方法
def r_g_vehicle():
if len(data) != 0 and len(type_data) != 0:
for g in data:
i = g[0].startswith('G')
if i: # 移除高鐵資訊
type_data.remove(g)
# 獲取動車資訊的方法
def d_vehicle():
if len(data) != 0:
for d in data: # 迴圈所有火車資料
i = d[0].startswith('D') # 判斷車次首字母是不是動車
if i == True: # 如果是將該條資訊新增到動車資料中
type_data.append(d)
# 移除動車資訊的方法
def r_d_vehicle():
if len(data) != 0 and len(type_data) != 0:
for d in data:
i = d[0].startswith('D')
if i == True: # 移除動車資訊
type_data.remove(d)
# 獲取直達車資訊的方法
def z_vehicle():
if len(data) != 0:
for z in data: # 迴圈所有火車資料
i = z[0].startswith('Z') # 判斷車次首字母是不是直達
if i == True: # 如果是將該條資訊新增到直達資料中
type_data.append(z)
# 移除直達車資訊的方法
def r_z_vehicle():
if len(data) != 0 and len(type_data) != 0:
for z in data:
i = z[0].startswith('Z')
if i == True: # 移除直達車資訊
type_data.remove(z)
# 獲取特快車資訊的方法
def t_vehicle():
if len(data) != 0:
for t in data: # 迴圈所有火車資料
i = t[0].startswith('T') # 判斷車次首字母是不是特快
if i == True: # 如果是將該條資訊新增到特快車資料中
type_data.append(t)
# 移除特快車資訊的方法
def r_t_vehicle():
if len(data) != 0 and len(type_data) != 0:
for t in data:
i = t[0].startswith('T')
if i == True: # 移除特快車資訊
type_data.remove(t)
# 獲取快速車資料的方法
def k_vehicle():
if len(data) != 0:
for k in data: # 迴圈所有火車資料
i = k[0].startswith('K') # 判斷車次首字母是不是快車
if i == True: # 如果是將該條資訊新增到快車資料中
type_data.append(k)
# 移除快速車資料的方法
def r_k_vehicle():
if len(data) != 0 and len(type_data) != 0:
for k in data:
i = k[0].startswith('K')
if i == True: # 移除快車資訊
type_data.remove(k)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2772836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 最新12306搶票爬蟲爬蟲
- 12306候補購票怎麼用?12306火車票候補購票使用攻略和注意事項
- 父子元件通訊——模擬12306購票新增乘車人元件
- PostgreSQL與12306搶火車票的思考SQL
- Python3.6實現12306火車票自動搶票Python
- 使用Python編寫一個多執行緒的12306搶票程式Python執行緒
- 用python爬取鏈家的租房資訊Python
- 12306火車票搶票Python程式碼最新完整版釋出,五一搶票就靠它了!Python
- 教你用Python動重新整理搶12306火車票,附原始碼!Python原始碼
- 用一段爬蟲程式碼爬取高音質音訊示例爬蟲音訊
- 用Nodejs Cheerio爬取NPM包詳細資訊NodeJSNPM
- Java爬蟲-爬取疫苗批次資訊Java爬蟲
- flowable 重構流程編輯器獲取使用者資訊
- python爬取北京租房資訊Python
- 淘寶商品資訊爬取
- python爬蟲——爬取大學排名資訊Python爬蟲
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- ajax編輯資訊和刪除資訊
- 輕鬆編輯影像資訊
- 是程式設計師就用Python查12306的票程式設計師Python
- 如何爬取視訊的爬蟲程式碼原始碼爬蟲原始碼
- 用 appium 爬取招聘資訊 這塊的內容怎麼用 bs4 爬取?求大佬指導APP
- C語言爬蟲程式編寫的爬取APP通用模板C語言爬蟲APP
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲
- 12306購票送溫暖
- java爬取豆瓣書籍資訊Java
- Python爬蟲爬取淘寶,京東商品資訊Python爬蟲
- 用node+puppeteer騰訊視訊爬取例項
- python itchat 爬取微信好友資訊Python
- 華為音訊編輯服務(Audio Editor Kit),快速構建應用音訊編輯能力音訊
- 通訊錄的c語言程式編輯C語言
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- 利用python編寫爬蟲爬取淘寶奶粉部分資料.1Python爬蟲
- vscode 編輯頁面開頭資訊VSCode
- Python爬蟲教程-15-讀取cookie(人人網)和SSL(12306官網)Python爬蟲Cookie
- 專業的視訊編輯工具:視訊編輯軟體
- Puppeteer 爬取豆瓣小組公開資訊