通過python爬蟲mechanize庫爬取本機ip地址的方法
需求分析
最近,各平臺更新的ip屬地功能非常火爆,因此呢,也出現(xiàn)了許多新的網(wǎng)絡(luò)用語,比如說“xx加幾分”,“xx扣大分”等等,非常的有趣啊
可是呢,最近一個小伙伴和我說,“仙草哥哥,我也想查看一下自己的ip地址,可是我不會啊,我應(yīng)該怎么樣才能查看到自己的ip地址呢?”
關(guān)于如何查看自己的ip地址,這個我記得我在很早之前已經(jīng)寫過了,有興趣的話可以查看一下我的這篇文章,當然這次呢,我會換一個復古的方式,使用mechanize進行爬取
實現(xiàn)分析
python中的mechanize算是一個比較古老的庫了,在python2的時代中,使用的多一些,在python3以后就很少使用了,現(xiàn)在已經(jīng)是2202年了,可能很多人都沒聽說過mechanize,這不要緊,我們先來簡單的講解一下,如何使用mechanize
其實,mechanize的使用方法,和內(nèi)置的urllib使用方法非常的相似,也就是說,只要你學會了如何使用urllib,那么就能夠順利的使用mechanize
首先,我們需要導入mechanize,并且創(chuàng)建一個Browser
import mechanize browser = mechanize.Browser()
然后通過open方法,直接打開一個網(wǎng)址,這個和urllib中的設(shè)想都是一樣的,也就說,像打開本機文件那樣,輕松的打開一個遠程的文件
file = br.open(url)
然后,我們需要通過read()方法,讀取這個文件中的內(nèi)容
content = file.read()
但是需要注意的是,和以二進制的方法打開一個文件相似,通過read()讀取得到的內(nèi)容,是二進制的形式,必須要通過decode()方法,進行解碼
html = content.decode()
當然,這個時候可能有的小伙伴要問了,默認的user-agent是什么樣的呢?如何修改user-agent呢?其實使用mechanize的時候,設(shè)置user-agent并不困難,只需要通過addheaders就可以了
brower.addheaders = [("user-agent", "Mozilla/5.0")]
另外,別忘記了要設(shè)置是否遵守robots.txt協(xié)議,通過set_handle_robots()完成這項設(shè)置
brower.set_handle_robots(False)
這樣,我們的基本操作就已經(jīng)完成了,可以實際使用一下了
實際使用
比如說,我們通過mechanize發(fā)起一個請求
import mechanize import json from base64 import b64decode br = mechanize.Browser() url = b64decode("aHR0cDovL2h0dHBiaW4ub3JnL2dldA==").decode() r = br.open(url).read().decode() r = json.loads(r) print("當前請求頭:", r["headers"]["User-Agent"])
從這里,我們可以看出,使用mechanize發(fā)起請求的時候,默認的請求頭就是urllib,也就是說,這段代碼實際上相當于
import json from urllib.request import urlopen from base64 import b64decode url = b64decode("aHR0cDovL2h0dHBiaW4ub3JnL2dldA==").decode() r = urlopen(url).read().decode() r = json.loads(r) print("當前請求頭:", r["headers"]["User-Agent"])
完整代碼演示
那么,下面就是完整的通過mechanize查詢本機ip地址的方法
import mechanize import json from base64 import b64decode br = mechanize.Browser() br.addheaders = [("user-agent", "Mozilla/5.0")] br.set_handle_robots(False) url = b64decode("aHR0cDovL2h0dHBiaW4ub3JnL2dldA==").decode() r = br.open(url).read().decode() r = json.loads(r) print("當前請求頭:", r["headers"]["User-Agent"]) print("當前ip地址:", r["origin"])
這個時候,可能有的小伙伴非常的困惑,查詢本機ip地址,那我不是直接通過百度搜索,搜索ip就行了嗎,為什么還需要自己寫程序呢?
嗯。。。好吧,我覺得你說的也很對,但是,你不覺得嘗試一下mechanize的使用超級酷嘛?
到此這篇關(guān)于通過python爬蟲mechanize庫爬取本機的ip地址的文章就介紹到這了,更多相關(guān)python爬蟲ip地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python7個爬蟲小案例詳解(附源碼)中篇
- Python7個爬蟲小案例詳解(附源碼)上篇
- Python爬蟲程序中使用生產(chǎn)者與消費者模式時進程過早退出的問題
- Python爬蟲庫urllib的使用教程詳解
- Python利用yield?form實現(xiàn)異步協(xié)程爬蟲
- python爬蟲之requests庫使用代理方式
- python?基于aiohttp的異步爬蟲實戰(zhàn)詳解
- Python爬蟲框架NewSpaper使用詳解
- Python爬蟲學習之requests的使用教程
- python爬蟲beautiful?soup的使用方式
- Python爬蟲之超級鷹驗證碼應(yīng)用
- Python爬蟲Requests庫的使用詳情
- python爬蟲模擬登錄之圖片驗證碼實現(xiàn)詳解
- Python爬蟲eval實現(xiàn)看漫畫漫畫柜mhgui實戰(zhàn)分析
- python爬蟲實戰(zhàn)項目之爬取pixiv圖片
- 使用python爬蟲實現(xiàn)子域名探測問題
- python爬蟲之代理ip正確使用方法實例
- Python7個爬蟲小案例詳解(附源碼)下篇
相關(guān)文章
Python中字符串的基礎(chǔ)介紹及常用操作總結(jié)
字符串輸出格式與輸入的樣子相同,都是用撇號包裹,撇號和其它特殊字符用用反斜杠轉(zhuǎn)義。如果字符串中有單撇號而沒有雙撇號則用雙撇號包裹,否則應(yīng)該用單撇號包裹。后面要介紹的print語句可以不帶撇號或轉(zhuǎn)義輸出字符串2021-09-09詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置
這篇文章主要介紹了詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11Python使用monkey.patch_all()解決協(xié)程阻塞問題
這篇文章主要介紹了Python使用monkey.patch_all()解決協(xié)程阻塞問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04