Part19 實例5:IP地址歸屬地的自動查詢
怎么查詢一個IP地址的歸屬呢写烤?比如說某一個IP地址他是來自于北京四康、上海還是美國呢冰沙?我們用一個python 程序來判斷哑芹。當(dāng)然你要判斷一個地址的歸屬地,你必須要有一個庫垫释,那么我們的程序沒有這樣的庫丝格,我們可以在網(wǎng)上尋找相關(guān)的資源,事實上棵譬,一個叫IP138的網(wǎng)站提供了這樣的功能显蝌,我們看一下這個界面:
實際這個界面呢,包含兩個輸入框订咸,我們可以在輸入框中輸入IP地址琅束,并通過點擊按鈕查詢來提交這個IP地址并獲取這個IP地址的所在地,這樣的東西適合人的使用算谈,因為這是一種人適合結(jié)構(gòu)方式,到那時他不適合程序料滥。那么在程序中怎么去提交IP地址呢然眼?這里邊教大家一個小技巧:你可以嘗試著在界面中輸入一下IP地址,并且點擊查詢葵腹,看一下瀏覽器的變化高每。在某些網(wǎng)站中他對提交的IP地址并沒有相關(guān)的處理屿岂,所以我們能看到通過IP138網(wǎng)站提交一個IP地址的一個URL鏈接是這樣的一個接口形式,這個接口形式其實很好理解:
它是一個以http開頭的一個鏈接鲸匿,然后通過ip = ipaddress這樣的一個形式爷怀,將ipadress作為一個參數(shù)提交到前面的網(wǎng)頁中,那么這個網(wǎng)頁根據(jù)這個參數(shù)會返回一個數(shù)據(jù)內(nèi)容带欢,就是這個地址對應(yīng)的所在的物理位置运授。那么我們利用這樣的URL接口就可以通過提交IP地址來找到IP地址的歸屬地。下面我們來用一段代碼來試試:
首先我們import requests庫乔煞,然后呢我們將剛才解析出來的接口用URL的變量來表示吁朦,然后我們用requests的方法提交一個IP地址,然后我們來檢測一下狀態(tài)碼渡贾,200逗宜,說明我們提交的信息被成功的返回了,然后我們看一下返回文本的相關(guān)內(nèi)容空骚,這里面我們查詢的內(nèi)容是返回文本的最后500個字節(jié)纺讲,我們可以看到這個IP地址是北京理工大學(xué)教育網(wǎng)的IP地址。
事實上囤屹,如果大家訪問這個網(wǎng)站熬甚,這個網(wǎng)站是北京理工大學(xué)首頁的IP地址。這里面有一個小技巧牺丙,如果你嘗試一下则涯,當(dāng)你獲取一個URL鏈接返回的內(nèi)容非常多的時候,r.text會導(dǎo)致IDLE的失效冲簿,所以我們建議大家如果在編寫程序去檢測訪問數(shù)據(jù)的時候粟判,盡量約束一個范圍空間,比如像剛剛寫的r.text[-500:]峦剔,也就是說最后的500档礁,或者說我們經(jīng)常使用的[0:1000],顯示一千個字符吝沫,這樣的方式可以保證不會影響IDLE的使用呻澜。下面我們給出IP地址查詢的全代碼:
與之前的例子相比,這個例子比較簡單惨险,但是這個例子其實告訴了大家一個道理:我們有的時候在網(wǎng)站上看到的人機交互方式羹幸,比如說圖形的、文本框的辫愉、需要點擊按鈕的這種方式在正式的向后臺服務(wù)器提交的時候栅受,其實都是以鏈接的形式來提交的。只要你能夠去通過瀏覽器的解析知道向后抬提交的鏈接的形式,那你就可以用python代碼模擬后者是用python代碼去向服務(wù)器做正式的提交屏镊,而不需要人來做這樣的事情依疼。所以當(dāng)你需要自動向網(wǎng)站提交的時候,建議大家去挖掘一下這個網(wǎng)站后臺的API是什么而芥。
Part 20 單元小結(jié)
在這個單元中律罢,我們講解了5個request庫的爬取實例,那經(jīng)過這些實例大家是不是知道request庫的強大功能呢棍丐?現(xiàn)在我們在看一看這些實例误辑。
第一個實例:京東商品頁面的爬取,我們用我們的網(wǎng)絡(luò)爬蟲框架獲得京東商品的頁面的信息骄酗。
第二個實例:我們做的是亞馬遜商品頁面的爬取稀余,他與京東商品頁面爬取不同,亞馬遜的商品對來源做了審查趋翻,所以我們可以利用request庫的功能來模擬瀏覽器向亞馬遜提出相關(guān)的請求并且正確的獲取商品頁面的信息睛琳。
第三個實例:同時我們可以向百度、360這樣的搜索引擎提交關(guān)鍵字并獲得他返回的結(jié)果踏烙。
第四個例子:是網(wǎng)絡(luò)圖片的爬取和存儲师骗,事實上它不只是圖片,對網(wǎng)上所有的二進(jìn)制的資源格式讨惩,圖片辟癌、視頻、動畫等等荐捻,都可以用同樣的代碼獲取它黍少。
第五個例子:我們看一下對一些網(wǎng)站怎么去人工的分析他的接口并利用接口來實現(xiàn)IP地址歸屬地的查詢。事實上处面,這些例子不僅檢測和證明了request庫的強大厂置,同時其實也讓我們?nèi)ニ伎嘉颐丛撛趺慈タ创W(wǎng)絡(luò)內(nèi)容。所以我們?nèi)祟惪吹骄W(wǎng)絡(luò)內(nèi)容是通過瀏覽器魂角,通過敲擊URL昵济,并且通過鼠標(biāo)去點擊一個一個的鏈接,但是如果你想要成為網(wǎng)絡(luò)爬蟲方面的專家野揪,你就要通過網(wǎng)絡(luò)爬蟲的視角來看待網(wǎng)絡(luò)內(nèi)容访忿。那么對于網(wǎng)絡(luò)上的內(nèi)容,什么是網(wǎng)絡(luò)爬蟲的視角呢斯稳?那就是網(wǎng)絡(luò)上的任何一個內(nèi)容它都有一個URL與它對應(yīng)海铆。而對網(wǎng)絡(luò)內(nèi)容的獲取、查詢都是通過構(gòu)造URL來實現(xiàn)的挣惰。我們知道HTTP協(xié)議中游添,他有兩個很重要的基礎(chǔ)系草,一個是網(wǎng)絡(luò)資源定位的URL,一個是對資源操作各種操作唆涝。只要我們勤加思考去練習(xí),能夠?qū)W會以爬蟲角度來看待網(wǎng)絡(luò)內(nèi)容唇辨,你就能成為網(wǎng)絡(luò)爬蟲方面的專家廊酣。
大家一起努力!