如何用Python爬蟲抓取代理IP

本篇文章為大家展示了如何用Python爬蟲抓取代理IP,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)天壇街道,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

不知道大家在訪問網(wǎng)站的時(shí)候有沒有遇到過這樣的狀況就是被訪問的網(wǎng)站會(huì)給出一個(gè)提示,提示的顯示是“訪問頻率太高”,如果在想進(jìn)行訪問那么必須要等一會(huì)或者是對(duì)方會(huì)給出一個(gè)驗(yàn)證碼使用驗(yàn)證碼對(duì)被訪問的網(wǎng)站進(jìn)行解封。之所以會(huì)有這樣的提示是因?yàn)槲覀兯廊』蛘咴L問的網(wǎng)站設(shè)置了反爬蟲機(jī)制,比如使用同一個(gè)IP頻繁的請(qǐng)求網(wǎng)頁的次數(shù)過多的時(shí)候,服務(wù)器由于反爬蟲機(jī)制的指令從而選擇拒絕服務(wù),這種情況單單依靠解封是比較難處理的,所以一個(gè)解決的方法就是偽裝本機(jī)的IP地址去訪問或者爬取網(wǎng)頁,也就是我們今天所有跟大家所說的代理IP

目前網(wǎng)上有許多代理ip,有免費(fèi)的也有付費(fèi)的。免費(fèi)的雖然不用花錢但有效的代理很少且不穩(wěn)定,付費(fèi)的可能會(huì)好一點(diǎn)  下面講一下代理IP的試用,將可用ip存入MongoDB,方便下次取出。

運(yùn)行平臺(tái):Windows

Python版本:Python3.6

IDE: Sublime Text

其他:Chrome瀏覽器

簡(jiǎn)述流程為:

步驟1:了解requests代理如何使用

步驟2:從代理網(wǎng)頁爬取到ip和端口

步驟3:檢測(cè)爬取到的ip是否可用

步驟4:將爬取的可用代理存入MongoDB

步驟5:從存入可用ip的數(shù)據(jù)庫里隨機(jī)抽取一個(gè)ip,測(cè)試成功后返回

對(duì)于requests來說,代理的設(shè)置比較簡(jiǎn)單,只需要傳入proxies參數(shù)即可。

不過需要注意的是,這里我是在本機(jī)安裝了抓包工具Fiddler,并用它在本地端口8888創(chuàng)建了一個(gè)HTTP代理服務(wù)(用Chrome插件SwitchyOmega),即代理服務(wù)為:127.0.0.1:8888,我們只要設(shè)置好這個(gè)代理,就可以成功將本機(jī)ip切換成代理軟件連接的服務(wù)器ip了。

如何用Python爬蟲抓取代理IP

這里我是用來http://httpbin.org/get作為測(cè)試網(wǎng)站,我們?cè)L問該網(wǎng)頁可以得到請(qǐng)求的有關(guān)信息,其中origin字段就是客戶端ip,我們可以根據(jù)返回的結(jié)果判斷代理是否成功。返回結(jié)果如下:

接下來我們便開始爬取代理IP,首先我們打開Chrome瀏覽器查看網(wǎng)頁,并找到ip和端口元素的信息。

如何用Python爬蟲抓取代理IP

可以看到,代理IP以表格存儲(chǔ)ip地址及其相關(guān)信息,所以我們用BeautifulSoup提取時(shí)很方便便能提取出相關(guān)信息,但是我們需要注意的是,爬取的ip很有可能出現(xiàn)重復(fù)的現(xiàn)象,尤其是我們同時(shí)爬取多個(gè)代理網(wǎng)頁又存儲(chǔ)到同一數(shù)組中時(shí),所以我們可以使用集合來去除重復(fù)的ip。

如何用Python爬蟲抓取代理IP

將要爬取頁數(shù)的ip爬取好后存入數(shù)組,然后再對(duì)其中的ip逐一測(cè)試。

如何用Python爬蟲抓取代理IP

這里就用到了上面提到的requests設(shè)置代理的方法,我們使用http://httpbin.org/ip作為測(cè)試網(wǎng)站,它可以直接返回我們的ip地址,測(cè)試通過后再存入MomgoDB數(shù)據(jù)庫。

如何用Python爬蟲抓取代理IP

連接數(shù)據(jù)庫然后指定數(shù)據(jù)庫和集合,再將數(shù)據(jù)插入就OK了。

如何用Python爬蟲抓取代理IP

最后運(yùn)行查看一下結(jié)果吧

如何用Python爬蟲抓取代理IP

運(yùn)行了一段時(shí)間后,難得看到一連三個(gè)測(cè)試通過,趕緊截圖保存一下,事實(shí)上是,畢竟是免費(fèi)代理IP,有效的還是很少的,并且存活時(shí)間確實(shí)很短,不過,爬取的量大,還是能找到可用的,我們只是用作練習(xí)的話,還是勉強(qiáng)夠用的?,F(xiàn)在看看數(shù)據(jù)庫里存儲(chǔ)的吧。

如何用Python爬蟲抓取代理IP

因?yàn)榕廊〉捻摂?shù)不多,加上有效ip也少,再加上我沒怎么爬,所以現(xiàn)在數(shù)據(jù)庫里的ip并不多,不過也算是將這些ip給存了下來。現(xiàn)在就來看看怎么隨機(jī)取出來吧。

如何用Python爬蟲抓取代理IP

由于擔(dān)心放入數(shù)據(jù)庫一段時(shí)間后ip會(huì)失效,所以取出前我重新進(jìn)行了一次測(cè)試,如果成功再返回ip,不成功的話就直接將其移出數(shù)據(jù)庫。

這樣我們需要使用代理的時(shí)候,就能通過數(shù)據(jù)庫隨時(shí)取出來了。

總的代碼如下:

zhihu.com/people/hdmi-blog

上述內(nèi)容就是如何用Python爬蟲抓取代理IP,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱:如何用Python爬蟲抓取代理IP
本文URL:http://muchs.cn/article44/johjee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、小程序開發(fā)網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、商城網(wǎng)站、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司