獲取12306最新的餘票資訊

2021-06-19 03:48:13 字數 1708 閱讀 1306

最近也快到春運高峰期了,每年到這個時候都是鐵路部門最忙的時候,同時也是12306(以後都以**來代替)大考的時候,出於乙個技術人員對於**的好奇所以嘗試獲取它的最新資料。

之前準備實現乙個第三方訂票系統,後來分析之後發現破解驗證碼這第一關就沒辦法完成,所以最後放棄這個想法。

後來考慮即使不能通過第三方來訂票,是否可以通過第三方來獲得現在最新的餘票資訊?後來分析**的查詢餘票的傳輸的資料發現的確可以實現。現在就將獲取最新餘票資料、以及在自己的系統中完全實現實時查詢餘票資訊的方法介紹給大家。另外在此申明本人並沒有針對**的惡意,也沒有絲毫炫耀的意思,本人就一普通的技術愛好者。好了,廢話不說正題開始了:

一、分析**查詢餘票在網路上傳輸的資料

在網路上傳的位址為:

首先知識struts的都知道後台採用struts1來進行接收

[後台方法名為:queryleftticket]

&orderrequest.train_date=2013-01-22   [出發日期]

&orderrequest.from_station_telecode=bjp    [出發站的編號,隨後會為大家解析bjp這些編號都是什麼意思,這裡代表就是北京]

&orderrequest.to_station_telecode=gzq    [到站為廣州]

&orderrequest.train_no=  [車次]

&trainpasstype=qb[有三個值:全部、始發、過路]

&trainclass=qb%23d%23z%23t%23k%23qt%23

&includestudent=00

&seattypeandnum=

&orderrequest.start_time_str=00%3a00--24%3a00  [出發時間]

最主要的就只有三個引數:

&orderrequest.train_date=2013-01-22  

&orderrequest.from_station_telecode=bjp 

&orderrequest.to_station_telecode=gzq

初看好像完全沒有規律,但是規律肯定會有的,不然如何展示到頁面上呢?

看看怎麼分析:

【is.close();

}//

釋放所有的鏈結,一般在所有的請求處理完成之後,才需要釋放

}通過這個方法就可以得到返回回來的結果串。

public

staticstring decodespan(stringtmp)

returnspantext;

}以上**就是解析span標籤中的文字。

最後解析完之後就可以存到本地的資料庫中了。

同時也可以進一步開發乙個執行緒,可以先在資料庫中配置幾條路線,比如從北京到廣州、從廣州到北京等,然後

啟動多個執行緒,每個執行緒對應查一條執行緒,然後每隔一段時間會啟動這些執行緒去**查詢最新的餘票資訊,然後

將結果存入本地庫中,最後在本地專案中就可以看到最新的資訊了。最後宣告寫這篇文間純粹個人愛好不針對

任何組織及個人,很多技術都是在互想學習中提高的,另外嚴厲鄙視那種使用自動工具來惡意提交的不法份子

說不定影響的就是你我自己的購票流程。

12306餘票查詢 二 獲取餘票資料

上節分析了獲取餘票資料的請求,本節開始抓取資料class get tickets def init self,start station,destination,date self.date date self.params 首先是傳遞你到底要查什麼,就是前面分析所需的三個引數 其實這裡要判斷一下,...

12306 餘票檢測軟體

根據日期,始發站,終點站,車次等資訊檢測 12306 是否有餘票 給 12306 購票網頁注入指令碼,指令碼模擬請求,解析引數,獲取最終的餘票資訊 餘票資訊通過介面資訊通知服務端 1.獲取所有車站名稱對應的 map station names是 12306 定義的全部變數,注入的指令碼可以直接使用。...

Python爬蟲學習 一 12306餘票資訊爬取

1.12306有反爬取機制,餘票資訊是在網頁就緒以後非同步載入出來的,首先我們可以開啟谷歌瀏覽器找到,找到中間請求的url,例如餘票檢索按鈕單擊的時候 由上圖可知,餘票資訊是放在result裡面的 2.取得這些資料 req urllib.request.request html req.add he...