国产探花免费观看_亚洲丰满少妇自慰呻吟_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來發現這個編號信息到底儲存在了那里

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟津县| 广南县| 博野县| 临朐县| 江口县| 大埔县| 梅河口市| 乌拉特中旗| 浪卡子县| 翁源县| 崇文区| 灯塔市| 肥城市| 潜江市| 双牌县| 峡江县| 辽宁省| 大英县| 赣榆县| 赤水市| 教育| 武冈市| 乌拉特前旗| 安达市| 南雄市| 三穗县| 长岭县| 盐城市| 河西区| 马边| 临城县| 梅河口市| 延吉市| 淮南市| 蒲江县| 永康市| 旬阳县| 韶关市| 湖南省| 隆昌县| 宜宾市|