python图像识别车票_是程序员就用Python查12306的票
0.環(huán)境
操作系統(tǒng):Windows
Python版本:3.5.2
1.前言
當(dāng)你想查詢一下火車票信息的時候,你還在上 12306 官網(wǎng)嗎?或是打開你手機(jī)里的 APP?
下面讓我們來用 Python 寫一個命令行版的火車票查看器, 只要在命令行一敲就能獲得你想要的火車票信息!如果你剛掌握了 Python 基礎(chǔ),這將是個不錯的小練習(xí)。
效果圖:
2.安裝Requests庫
若你的環(huán)境中沒有requests模塊,直接使用pip安裝。
pip install requests
3.代碼實(shí)現(xiàn)思路
首先我們打開12306的票價查詢頁面:
https://kyfw.12306.cn/otn/leftTicket/init
以chrome為例,按下F12打開瀏覽器開發(fā)者編輯模式。隨便輸入起點(diǎn)終點(diǎn),和開始日期,點(diǎn)擊查詢。
然后你就會看到開發(fā)者模式的network選項(xiàng)里會顯示出來瀏覽器頁面加載的文件,就像下圖這樣:
看不出什么?那我們再重新點(diǎn)擊查詢按鈕好幾次,你會發(fā)現(xiàn)瀏覽器跟著你的點(diǎn)擊發(fā)起了好幾次查詢請求,就像下圖這樣,我這里用紅框幫你標(biāo)出來了:
在這些查詢請求里,我們找一個點(diǎn)進(jìn)去,看看它到底請求了點(diǎn)什么東西。
可以看到在點(diǎn)擊查詢按鈕的時候,瀏覽器發(fā)起了一個名為
https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=2019-03-10&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=HHC&purpose_codes=ADULT
的請求。
我們來仔細(xì)看看這個url里面,train_date,from_station 以及 to_station 是不是分別代表著火車出發(fā)日期,始發(fā)站,終點(diǎn)站?
我們直接把這個url貼到瀏覽器里看看:
是不是發(fā)現(xiàn)了什么?
對了,這其實(shí)里面就包含了我們需要的火車票信息數(shù)據(jù)!!!
那我們是不是只要在代碼里把我們自己需要查詢的火車出發(fā)日期,始發(fā)站,終點(diǎn)站填進(jìn)這個url,然后把返回的這些數(shù)據(jù)過濾一下顯示出來就行了?
但是且慢,細(xì)心的同學(xué)會發(fā)現(xiàn),from_station 和 to_station 里面的都不是正常的中文地名,而是代號,我們不能直接把中文地名填進(jìn)url,而是需要把中文地名轉(zhuǎn)換成代號,那這個代號又是哪里來的呢?
我們再看這個url請求12306響應(yīng)了的東西:
可以在“map”里看到,城市火車站代號和城市火車站是有一一對應(yīng)的關(guān)系的,那這些一一對應(yīng)的關(guān)系又是藏在哪里的呢?
我們點(diǎn)擊開發(fā)者模式的Sources選項(xiàng),經(jīng)過耐心查找,我們發(fā)現(xiàn)了一個東西,見下圖:
4.總結(jié)
由于 12306 的接口經(jīng)常變化,本文提供的代碼可能會很快過期,如果遇到接口問題,需要根據(jù)最新的接口對代碼進(jìn)行適當(dāng)修改才可以完成這個應(yīng)用。
好了,那現(xiàn)在代碼的實(shí)現(xiàn)思路就有了。
我來給你梳理一下:
填入你需要的出行日期、始發(fā)站、終點(diǎn)站。
將獲取到的中文始發(fā)站終點(diǎn)站,通過全國的火車站的名字及代號對應(yīng)表轉(zhuǎn)換成代號,再拼接成查詢url,去查詢數(shù)據(jù)。
過濾并顯示查詢結(jié)果。
關(guān)注公眾號「Python專欄」,后臺回復(fù)「12306」獲取完整代碼~
總結(jié)
以上是生活随笔為你收集整理的python图像识别车票_是程序员就用Python查12306的票的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: threadpooltaskexecut
- 下一篇: python循环变颜色_在Python中