是程式設計師就用Python查12306的票
0.環境
作業系統:Windows Python版本:3.5.2
1.前言
當你想查詢一下火車票資訊的時候,你還在上 12306 官網嗎?或是開啟你手機裡的 APP? 下面讓我們來用 Python 寫一個命令列版的火車票檢視器, 只要在命令列一敲就能獲得你想要的火車票資訊!如果你剛掌握了 Python 基礎,這將是個不錯的小練習。 效果圖:
2.安裝Requests庫
若你的環境中沒有requests模組,直接使用pip安裝。
pip install requests
注:Requests庫使用介紹詳見 https://blog.csdn.net/i_chaoren/article/details/63266154
3.程式碼實現思路
首先我們開啟12306的票價查詢頁面: https://kyfw.12306.cn/otn/leftTicket/init 以chrome為例,按下F12開啟瀏覽器開發者編輯模式。隨便輸入起點終點,和開始日期,點選查詢。
然後你就會看到開發者模式的network選項裡會顯示出來瀏覽器頁面載入的檔案,就像下圖這樣: 看不出什麼?那我們再重新點選查詢按鈕好幾次,你會發現瀏覽器跟著你的點擊發起了好幾次查詢請求,就像下圖這樣,我這裡用紅框幫你標出來了:
我們來仔細看看這個url裡面,train_date,from_station 以及 to_station 是不是分別代表著火車出發日期,始發站,終點站?
我們直接把這個url貼到瀏覽器裡看看: 是不是發現了什麼?
對了,這其實裡面就包含了我們需要的火車票資訊資料!!!
那我們是不是隻要在程式碼裡把我們自己需要查詢的火車出發日期,始發站,終點站填進這個url,然後把返回的這些資料過濾一下顯示出來就行了?
但是且慢,細心的同學會發現,from_station 和 to_station 裡面的都不是正常的中文地名,而是代號,我們不能直接把中文地名填進url,而是需要把中文地名轉換成代號,那這個代號又是哪裡來的呢?
我們再看這個url請求12306響應了的東西:
可以在“map”裡看到,城市火車站代號和城市火車站是有一一對應的關係的,那這些一一對應的關係又是藏在哪裡的呢? 我們點選開發者模式的Sources選項,經過耐心查詢,我們發現了一個東西,見下圖:
看名字是不是覺得發現了什麼? 我們把這個路徑寫成url貼進瀏覽器試試: https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9098 就這樣成功發現了全國的火車站的名字及代號對應表!!!
4.總結
由於 12306 的介面經常變化,本文提供的程式碼可能會很快過期,如果遇到介面問題,需要根據最新的介面對程式碼進行適當修改才可以完成這個應用。
好了,那現在程式碼的實現思路就有了。 我來給你梳理一下:
- 填入你需要的出行日期、始發站、終點站。
- 將獲取到的中文始發站終點站,通過全國的火車站的名字及代號對應錶轉換成代號,再拼接成查詢url,去查詢資料。
- 過濾並顯示查詢結果。
關注公眾號「Python專欄」,後臺回覆「12306」獲取完整程式碼~
相關推薦
是程式設計師就用Python查12306的票
開發十年,就只剩下這套架構體系了! >>>
是程式設計師,就用python匯出pdf
開發十年,就只剩下這套架構體系了! >>>
職場丨Python程式設計師就業大調查,看看你未來能賺多少錢
作為Python程式設計師,到底該拿多少工資,又該學習哪些技能呢?這裡在前程無憂上一共蒐集了150家公司的Python程式設計師招聘資訊並整理成表格。今天,根據表格的資料繪製了兩張統計圖,如下: 1、不同薪資水平上,提供Python開發崗位的公司數量。 圖中橫軸是薪資水
用python實現12306搶票
用splinter或者selenium都可以實現。這兩個庫是實現web瀏覽器自動操作的庫。就是模擬人的點選等等一系列操作。 不過先對應你的谷歌瀏覽器版本下好對應的chromedriver,然後新增好環境變數 驗證碼的部分沒有做,就是在你登入的時候要手動點選驗證,但是登入進去之後就不用管了,買
Python程式設計師必用的電腦桌面
最近發現了兩套開源、神祕、科幻、有逼格的桌面,非常適合在座的各位程式設計師。 NO1、Himawaripy Himawaripy是一個開源的使用 Python 3開發的指令碼專案。主要功能是根據使用者設定的時間間隔不停的抓取 Himaw
程式設計師的我是如何搶票的(Python)
馬上就要回家過年了,你的票買好了嗎。 雖然我不用搶票,但是還是研究了一下怎麼搶票。 程式設計師嘛,就是要對一切問題進行解構,探索原理本質,尋找規律,將其自動化。。。 好了,言歸正傳,開始。 1.首先,開啟12306網。選個自己要買的路段,我這裡是隨便選的。 然後
厲害了,天剛一冷程式設計師就都換上了襯衫。。
Java技術棧(id:javastack)整理於網路 這才農曆九月初,大秋天的,深圳的天氣就已經降溫了。更搞笑的是,朋友圈、群裡都在轉發下面這張圖片,相信大部分人已經看過了吧。 這是哪家公司的?這麼搞笑,程式設計師們都換上了格子襯衫,喜感十足,還
中國新說唱熱門歌曲有哪些?今天我們就用Python來分析!
之前風靡朋友圈的“skr”流行語把中國新說唱這一節目帶上了熱議高峰,本文就來分析下,如何用Python爬取大受歡迎的說唱歌曲。 首先登入https://music.163.com/ 網易雲音樂搜尋新說唱,開啟Chrome的開發工具工具選擇Network並重新載入頁面,找到與評論資料相關的請求即n
程式設計師就得了解的九個真相, 你懂得了多少?
程式設計師是對計算機和程式碼知識非常瞭解的人,下面給大家說一些同行業的人不會說出口的真相,你瞭解多少? 真相一 真相二 真相三 小編是一個有著5年工作經驗的java程式設計師,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具
是程式設計師就應該知道的東西
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Net程式設計師學用Oracle系列(1):導航目錄
原文:https://www.cnblogs.com/hanzongze/p/oracle-catalog.html .Net程式設計師學用Oracle系列(1):導航目錄 .Net程式設計師學用Oracle系列(2):準備測試環境 .Net程式設計師學用Oracle系列(3):資料庫程式設計
文藝程式設計師丨基於Python的詩和遠方,我有python也有詩!
概述 學習Python中有不明白推薦加入交流群 號:516107834
以後的程式設計師就輕鬆了
17-12-2610:59 而最近,美國萊斯大學和奧地利維也納技術大學的研究人員就聯合研製出了一種叫做“外爾—近藤半金屬”(Weyl-Kondo semimetal)的全新量子材料,或可用於量子計算等領域。但是因為量子力學的特殊性, 科學家們至今為弄清楚這種材料產生詭異特性的原理。 再出
沒能成為中產階級的中年程式設計師就該死嗎?
點選上方“程式人生”,選擇“置頂公眾號” 第一時間關注程式猿(媛)身邊的故事 圖片源自:Venom 作者 胡巍巍 如需轉載,請聯絡我們。 太意外! 我身邊的一位中產媽媽袁靜,居然開始“哭窮”了! 最近聚餐時,已經是倆娃媽的袁靜跟我抱
程式設計師要用到的基本語言
程式設計師要用到的基本語言 java Python JavaScript C/C ++ java Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功
“程式設計師就該加班”,有這樣的老闆你會離職嗎?
不加班的程式設計師不是好程式設計師。不知從何時起,網際網路公司颳起了加班之風,996幾乎是標配,997也不是沒有。有些公司做得比較隱晦,比如只有加班才有班車坐,才有夜宵吃,每月將員工的考勤資料拉出來作為績效考核的依據等等,變相的鼓勵員工加班去爭取這些微薄的福利,有的公司則明目張膽的發文公告強制要求員
天一冷,程式設計師就都換上了格子衫
這才農曆九月初,大秋天的,深圳的天氣就已經降溫了。更搞笑的是,朋友圈、群裡都在轉發下面這張圖片,相信大部分人已經看過了吧。 這是哪家公司的?這麼搞笑,程式設計師們都換上了格子襯衫,喜感十足,還互相尷尬對笑,低頭寫程式碼的這位小哥也不忘記偷笑。。他們是約好的嗎? 我自己是一名從事了
以為找了程式設計師就可以開發APP了?
APP的開發越來越多,但真要開發起來,大多數人是一頭霧水,問了不少程式設計師也聽不明白,下面就給大家簡單介紹一下。 首先APP主流有四大系統,也就是說一般在四種作業系統上執行。 第一、蘋果ios系統版本,也就是蘋果手機,平板上執行的APP,這類開發語言是Obje
程式設計師應該用程式來思維,有空來研究一下狼 羊 草和農夫過河,將演算法轉換為程式碼 轉
題目描述:農夫需要把狼、羊、菜和自己運到河對岸去,只有農夫能夠划船,而且船比較小,除農夫之外每次只能運一種東西,還有一個棘手問題,就是如果沒有農夫看著,羊會偷吃菜,狼會吃羊。請考慮一種方法,讓農夫能夠安全地安排這些東西和他自己過河。 這個題目考察人的快速邏輯運算和
高齡程式設計師就意味著失業?還不是因為公司養不起大齡碼農啊
據美國知名調查機構 Payscale調查顯示,一些高科技公司的年齡中位數是30歲以下。那些更成熟一些的技術公司如戴爾、IBM、甲骨文,才有年齡更大一些的勞動力,年齡中位數超過了35歲。隨著年齡的增長,程式設計師會相對難以保持技能更新。許多人寧願留在自己的舒適區,不冒任何風險。