鞠耀輝 陳偉利
(吉林建筑大學 電氣與計算機學院,吉林 長春130118)
由于高鐵大力建設,現在鐵路運行車次半年至1 年間就調整一次。鐵路出行因高鐵的出現,與飛機有了競爭力,成為現代出行重要工具。相應的購票問題就出現了,尤其在春運、法定節假日、寒(暑)假學生潮和景點的旅游旺季等。那么,如何如何全力“榨取”火車票資源,實現火車全負荷運行,成為了一項可研發項目。
基于Python 爬蟲技術的系統設計可以很好地解決這些問題。采用Python 爬蟲技術的系統軟件,即能解決人們購不到票或購票難的問題。不僅減小了購票時花費的精力,也最大限度的利用了火車的運力。本文章主要闡述了ZigBee 路燈控制系統中節點的具體設計方案及組網。
在該軟件運行之前,先導入火車運行車次、起點、中間站點、終點及時間信息構成鏈狀數據結構。然后建立標記起點,可任意轉換線路的中間點,終點。之后建立分段的車票價格、運行時間,這個時間包括了出發時間及到達時間。再建立優選方案,在乘客進行購票時,自動優選直達票,其次是同車換乘,最后才會選擇中轉車站,并且車站盡量選擇同一站或相近的車站。之后建立硬件服務器,在服務器上運行Python 算法程序以達到接收手機APP 和WEB 信息的目的。通過算法的計算,導出最優的乘車方案,提供給用戶。
爬蟲,應該稱為網絡爬蟲,也叫網頁蜘蛛、網絡機器人、網絡螞蟻等。其實,搜索引擎,就是網絡爬蟲的應用者。但搜索引擎不能對所需網站及特定數據進行獲取,因此,需要自己開發爬蟲來解決問題。隨著互聯網的迅速發展,大數據時代的來臨,數據挖掘在從海量數據中探查潛在的價值信息起到了重要的作用,成為當下熱門的研究和實踐方向之一。python 作為數據挖掘領域中較為熱門的程序語言,其豐富的技術庫和強大的科學計算能力成為數據挖掘過程中不可或缺的工具。總的說,Python是一個使用簡潔方便,很適合初學者使用的語言。基于Python的網絡爬蟲可以更加準確的獲取我們所需的目標數據,具有一定的研究價值。
爬在完成手機APP 的編寫及運行測試后,提供給用戶免費使用。用戶可以直接使用此軟件,也可以在遇到購票上的困難時使用該軟件。用戶進行購票時,對用戶輸入的起點、終點及具體車次進行數據采集,通過計算好的優選方案優先向用戶推薦直達票,直達無票的情況下,直接使用同車換乘的方案,即在用戶不需要換座換車的同時達到中轉的目的。一站如果達不到目的那就增加到兩站、三站。在這種方案進行不下去或者耗費費用時間行程等太高時,進行下一個方案。根據席位的差別進行席位交叉換乘,即購買同車另一個或另一種席位的中轉票,只需切換席位就能達到中轉的目的。如果席位切換也不行時,若是購票者愿意多購買一站,還可以在分段的行程中,有一兩個站點的重疊,也就是說在其中的兩站之間,購票者同時買了兩張票,但也能夠達到同車換乘的目的。疊加換乘也不行,那就通過購買少數站站票的方式實現購票。即購買某兩個無剩余票站點之間的站票,使得用戶前一段行程有座位,中間站一會,后一段行程也有座位。但要保證站票的時間不能太長。同車換乘是最優的方案,避免了換車的時間損失,同時有效利用車票的零散資源。此上的這些方案為層層遞進的關系,在上一個方案無法進行下去時,才會進入到下一種方案的計算。這些數據是實時采集的,即可通過不同時間,多次計算獲取購票方案。
關于算法部分,要求計算建立標記起點、中間站點、終點數據信息。
某線路,起點為a0,終點為an 在起點到終點之間有a1,a2等站點,現在就需要建立一個車票信息數據庫,具體如下:
(1)使用Python 爬蟲技術,將a0→a1、a0→a2、a0→a3……a0→an-1、a0→an 并標記為:b01、b02、b03……b0n-1、b0n,數據包括:有票、具體張數、無票3 種,及相應的席位信息等;
(2)同理建立a1→a2、a1→a3……a1→an-1、a1→an 并標記為:b12、b13、b14……b1n-1、b1n,數據包括:有票、具體張數、無票3 種,及相應的席位信息等;
(3)最后建立an-1→an 并標記為:bn-1n,數據包括:有票、具體張數、無票3 種,及相應的席位信息等;
(4)數據共有:(n-1)+(n-2)+(n-3)+……+2+1=n(n-1)/2;
(5)數據拼接
①1 點換乘:在有票的條件下,查詢b0m+bmn 的可行性,其中am 就是同車換乘中轉站點;
②2 點換乘:在有票的條件下,查詢b0m+bml+bln 的可行性,其中am、al 就是同車換乘中轉站點;
③多點換乘:在有票的條件下,查詢b0m+bml+……+bkn 的可行性,其中am、al……ak 就是同車換乘中轉站點;
上述方法無法實現時,考慮“席位切換”的方式實現購票,即標記ba、bb、bc、bd 等信息,其中a(商務座)、b(一等座)、c(二等座)、d(站票)為席位種類,在數據拼接時,增加“席位切換”。可能得到如下信息:ba0m+bbml+……+bckn,其中am、al……ak 就是同車換乘中轉站點;
上述方法無法實現時,考慮“少疊加換乘”的方式實現購票,即標記ba、bb、bc、bd 等信息,其中a(商務座)、b(一等座)、c(二等座)、d(站票)為席位種類,在數據拼接時,增加“少疊加換乘”。可能得到如下信息:ba0m+1+bbm-1l+……+bckn,其中am-1、am+1、al……ak 就是同車換乘中轉站點;
上述方法無法實現時,考慮“少行程補票換乘”的方式實現購票,即標記ba、bb、bc、bd 等信息,其中a(商務座)、b(一等座)、c(二等座)、d(站票)為席位種類,在數據拼接時,增加“少疊加換乘”。可能得到如下信息:ba0m-1+bdm-1m+1+bbm+1l+……+bckn,其中am-1、am+1、al……ak 就是同車換乘中轉站點;
(6)上述方法無法實現時,考慮“2 車或2 車以上換乘”的方式實現購票,首先選擇中轉車站(盡量選擇同一車站點),再確定具體車次信息,必須考慮中轉時間(目前很多車站提供換乘快速通道),車次晚點等因素。比如:“2 車換乘”就變成“2 個同車換乘”,再應用上述的“同車換乘”的方法實現分段購票。
同理,“2 車以上換乘”也就變成了“多個同車換乘”,再應用上述的“同車換乘”的方法實現分段購票。只是,換乘中轉站點越多,耽誤的換乘時間也就越多,其中不確定因素也就越多。
當使用其他軟件搶不到票時,其實并不是真正的沒有車票了,而是還有很多碎片化的短程車票可用。Python 爬蟲技術常規用于大數據統計、科研運算與研究中。從技術角度上,python 爬蟲技術實現將起點車次、終點車次、中間站車次分解進行數據統計,采用神經網絡多元算法實現購票。可以最大限度的利用火車運力,將零散的碎片票集成應用,達到全負荷運行狀態。達到充分利用碎片化車票、節省人力物力、節能減排的目的。