国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python編程實現12306的一個小爬蟲實例

2020-02-16 11:20:23
字體:
來源:轉載
供稿:網友

本文思路主要來源于實驗樓的教程,但是一些具體的一些細節是我自己發現的,比如哪里獲得站點對應的3位英文編號,怎么獲得這個查詢的url

本文用到的庫主要有requests(獲取url的內容),prettytable(讓文本輸出美觀),argparse(命令行參數解析)

關于這些庫怎么使用,可以參見我之前的博文

1、首先打開12306余票查詢的界面

https://kyfw.12306.cn/otn/lcxxcx/init

我們想要的信息當然就是在輸入了始發站、終點站和日期之后各車次的時間和車票余量,那么我們嘗試在始發站使用檢查元素,觀察一下它是怎么上傳始發站的信息的,那么我們不妨隨便輸入出發地、目的地和信息,使用抓包工具來看看它是怎么發包的(使用瀏覽器也可以,因為我們只需要查看包的內容,不需要更改包)

2、

在chrome的network中我們可以查看到我們點擊之后瀏覽器發送的所有包(關于http包的知識不熟悉的同學,可以看看《圖解http》這本書)

點擊查詢之后我們馬上就會注意到以query開頭的這個包,顯然這就是一個查詢指令,我們看看這個包的url

'https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-10-04&from_station=BJP&to_station=XKS'

然后我們看看它的response

仔細觀察就能發現它其實是一串json格式的字符串(要非常有經驗。。。。)

3、經過以上這些過程,我們大致就能知道我們需要做的是什么了,我們只需要更改url中的data,fromstaion,tostaion后面的內容,然后用requests獲得response,然后解析這一串json字符就行了。

但是我們會發現,日期還好說,對于fromstation和tostaion的代碼,我們該怎么辦呢?

4、有兩種可能,一中可能是這些文件在服務器上,每回改變站點網頁都會從服務器請求這個站點的代碼,還有一種可能是這個已經下載到本地了,如何判斷呢?我們不妨改變一下始發站,然后用抓包軟件(或者瀏覽器)觀察我們的瀏覽器是否向12306發送了包

把北京改成了上海,但是我們發現瀏覽器并沒有發送包

這樣我們基本可以肯定這個車站編號信息是存在本地了(已經從服務器下載下來)

5、我們這時候,就需要分析html來發現這個編號信息到底儲存在了那里

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太和县| 马鞍山市| 永吉县| 武功县| 盐城市| 尼木县| 蛟河市| 内江市| 安国市| 眉山市| 延吉市| 灯塔市| 布拖县| 延边| 津市市| 萨迦县| 香港| 临清市| 云阳县| 镇江市| 金沙县| 东方市| 青冈县| 永宁县| 大城县| 荔浦县| 贵阳市| 沙湾县| 宝清县| 通江县| 宁化县| 汉川市| 宜章县| 贵港市| 祁连县| 永昌县| 杨浦区| 马山县| 泽库县| 特克斯县| 夏津县|