03.01 Python網絡爬蟲之IP代理池,如何不讓IP一直被封

在爬取網站的時候,

要多的站在對方的角度想問題,

這次教你怎麼偽裝自己的 ip 地址,

別讓對方輕易的就把你給封掉。

如何偽裝呢?

對於 python 來說,

使用代理訪問很簡單,

就拿我們經常使用的 requests 庫來說,

使用代理 ip 如下

定義代理IP

<code>proxie = {         'http' : 'http://xx.xxx.xxx.xxx:xxxx',        'http' : 'http://xxx.xx.xx.xxx:xxx',        ....    }  /<code>

使用代理

<code>response = requests.get(url,proxies=proxies)/<code>


這樣就可以使用你定義的代理地址去訪問網站了。


代理地址哪裡來

在網上有很多免費的代理,

隨便搜就有一堆了,

不過你知道的,

免費的話很多人都去使用,

所以這些代理IP很不穩定。

如果你有錢的話,

市面上有人就專門提供代理IP的,

直接去買就行了。

不想花錢呢?

可以搞一個IP代理池,

主要就是通過 python 程序去抓取網上大量免費的代理 ip ,

然後定時的去檢測這些 ip 可不可以用,

那麼下次你要使用代理 ip 的時候,

你只需要去自己的 ip 代理池裡面拿就行了。


道理都懂,

但是不想自己弄一個代理池。

有沒有現成的?

不瞞你說,

有一個不錯的開源 ip 代理池。


https://github.com/Python3WebSpider/ProxyPool.git


如何使用呢

首先使用 git clone 將源代碼拉到你本地

<code>git clone https://github.com/Python3WebSpider/ProxyPool.git/<code>

接著打開項目中的 setting.py,

在這裡可以配置相關信息,

比如 Redis 的地址密碼相關,

(如果你之前沒有使用過 redis 的話,可以到如下地址下載 https://github.com/MicrosoftArchive/redis/releases)

Python網絡爬蟲之IP代理池,如何不讓IP一直被封

接著在你 clone 下來的文件目錄中,

安裝相關所需的 python 模塊:

<code>pip3 install -r requirements.txt/<code>

接下來開啟你的 redis:

Python網絡爬蟲之IP代理池,如何不讓IP一直被封


redis 的默認端口就是 6379,

接著就可以運行 run.py 了:

<code>代理池開始運行 * Running on http://0.0.0.0:5555/ (Press CTRL+C to quit)開始抓取代理獲取器開始執行Crawling http://www.66ip.cn/1.html正在抓取 http://www.66ip.cn/1.html抓取成功 http://www.66ip.cn/1.html 200成功獲取到代理 201.69.7.108:9000成功獲取到代理 111.67.97.58:36251成功獲取到代理 187.32.159.61:51936成功獲取到代理 60.13.42.154:9999成功獲取到代理 106.14.5.129:80成功獲取到代理 222.92.112.66:8080成功獲取到代理 125.26.99.84:60493.../<code>

如果你在運行的時候出現這個錯誤:

<code>

更新一下 redis 版本:

<code>pip3 install redis==2.10.6 /<code>

運行 run.py ,

這時候在你的 redis 中就有爬取到的代理 ip 了:


Python網絡爬蟲之IP代理池,如何不讓IP一直被封


項目跑起來之後,

你就可以訪問你的代理池了,

比如隨機獲取一個代理 ip 地址:

<code>http://localhost:5555/random/<code>

這樣訪問之後就會獲取到一個代理 ip。

在代碼中獲取代理也不在話下啦:

<code>

這樣,

我們就成功的在我們的代理池中獲取代理 ip 了。

那麼下次誰還敢封你ip,

你就拿出你的代理ip,

繼續爬唄!


分享到:


相關文章: