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