python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5
Part19 實例5:IP地址歸屬地的自動查詢
怎么查詢一個IP地址的歸屬呢?比如說某一個IP地址他是來自于北京、上海還是美國呢?我們用一個python 程序來判斷。當然你要判斷一個地址的歸屬地,你必須要有一個庫,那么我們的程序沒有這樣的庫,我們可以在網上尋找相關的資源,事實上,一個叫IP138的網站提供了這樣的功能,我們看一下這個界面:
實際這個界面呢,包含兩個輸入框,我們可以在輸入框中輸入IP地址,并通過點擊按鈕查詢來提交這個IP地址并獲取這個IP地址的所在地,這樣的東西適合人的使用,因為這是一種人適合結構方式,到那時他不適合程序。那么在程序中怎么去提交IP地址呢?這里邊教大家一個小技巧:你可以嘗試著在界面中輸入一下IP地址,并且點擊查詢,看一下瀏覽器的變化。在某些網站中他對提交的IP地址并沒有相關的處理,所以我們能看到通過IP138網站提交一個IP地址的一個URL鏈接是這樣的一個接口形式,這個接口形式其實很好理解:
它是一個以http開頭的一個鏈接,然后通過ip = ipaddress這樣的一個形式,將ipadress作為一個參數提交到前面的網頁中,那么這個網頁根據這個參數會返回一個數據內容,就是這個地址對應的所在的物理位置。那么我們利用這樣的URL接口就可以通過提交IP地址來找到IP地址的歸屬地。下面我們來用一段代碼來試試:
首先我們import requests庫,然后呢我們將剛才解析出來的接口用URL的變量來表示,然后我們用requests的方法提交一個IP地址,然后我們來檢測一下狀態碼,200,說明我們提交的信息被成功的返回了,然后我們看一下返回文本的相關內容,這里面我們查詢的內容是返回文本的最后500個字節,我們可以看到這個IP地址是北京理工大學教育網的IP地址。
事實上,如果大家訪問這個網站,這個網站是北京理工大學首頁的IP地址。這里面有一個小技巧,如果你嘗試一下,當你獲取一個URL鏈接返回的內容非常多的時候,r.text會導致IDLE的失效,所以我們建議大家如果在編寫程序去檢測訪問數據的時候,盡量約束一個范圍空間,比如像剛剛寫的r.text[-500:],也就是說最后的500,或者說我們經常使用的[0:1000],顯示一千個字符,這樣的方式可以保證不會影響IDLE的使用。下面我們給出IP地址查詢的全代碼:
與之前的例子相比,這個例子比較簡單,但是這個例子其實告訴了大家一個道理:我們有的時候在網站上看到的人機交互方式,比如說圖形的、文本框的、需要點擊按鈕的這種方式在正式的向后臺服務器提交的時候,其實都是以鏈接的形式來提交的。只要你能夠去通過瀏覽器的解析知道向后抬提交的鏈接的形式,那你就可以用python代碼模擬后者是用python代碼去向服務器做正式的提交,而不需要人來做這樣的事情。所以當你需要自動向網站提交的時候,建議大家去挖掘一下這個網站后臺的API是什么。
Part 20 單元小結
在這個單元中,我們講解了5個request庫的爬取實例,那經過這些實例大家是不是知道request庫的強大功能呢?現在我們在看一看這些實例。
第一個實例:京東商品頁面的爬取,我們用我們的網絡爬蟲框架獲得京東商品的頁面的信息。
第二個實例:我們做的是亞馬遜商品頁面的爬取,他與京東商品頁面爬取不同,亞馬遜的商品對來源做了審查,所以我們可以利用request庫的功能來模擬瀏覽器向亞馬遜提出相關的請求并且正確的獲取商品頁面的信息。
第三個實例:同時我們可以向百度、360這樣的搜索引擎提交關鍵字并獲得他返回的結果。
第四個例子:是網絡圖片的爬取和存儲,事實上它不只是圖片,對網上所有的二進制的資源格式,圖片、視頻、動畫等等,都可以用同樣的代碼獲取它。
第五個例子:我們看一下對一些網站怎么去人工的分析他的接口并利用接口來實現IP地址歸屬地的查詢。事實上,這些例子不僅檢測和證明了request庫的強大,同時其實也讓我們去思考我么該怎么去看待網絡內容。所以我們人類看到網絡內容是通過瀏覽器,通過敲擊URL,并且通過鼠標去點擊一個一個的鏈接,但是如果你想要成為網絡爬蟲方面的專家,你就要通過網絡爬蟲的視角來看待網絡內容。那么對于網絡上的內容,什么是網絡爬蟲的視角呢?那就是網絡上的任何一個內容它都有一個URL與它對應。而對網絡內容的獲取、查詢都是通過構造URL來實現的。我們知道HTTP協議中,他有兩個很重要的基礎,一個是網絡資源定位的URL,一個是對資源操作各種操作。只要我們勤加思考去練習,能夠學會以爬蟲角度來看待網絡內容,你就能成為網絡爬蟲方面的專家。
大家一起努力!
總結
以上是生活随笔為你收集整理的python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(三):支持向量机SVM(含代码
- 下一篇: websocket python爬虫_p