python爬蟲18 | 就算你被封了也能繼續爬,使用IP代理池偽裝你的IP地址,讓IP飄一會

我們上次說了偽裝頭部

python爬蟲17 | 聽說你又被封 ip 了,你要學會偽裝好自己,這次說說偽裝你的頭部

讓自己的 python 爬蟲假裝是瀏覽器

小帥b主要是想讓你知道

在爬取網站的時候

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

其實

這和泡妞差不多

你要多站在妹紙的角度思考

她的興趣是什麼

她喜歡什麼

而不是自己感動自己

單方面的瘋狂索取

哦..

扯遠了

我們回到反爬蟲

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

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

如何偽裝呢

那麼

接下來就是

學習 python 的正確姿勢

其實

對於 python 來說

使用代理訪問很簡單

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

使用代理 ip 如下

定義代理IP

proxie = {
http : http://xx.xxx.xxx.xxx:xxxx,
http : http://xxx.xx.xx.xxx:xxx,
....
}

使用代理

response = requests.get(url,proxies=proxies)

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

我知道你要問了

代理地址哪裡來

在網上有很多免費的代理

隨便搜就有一堆了

不過你知道的

免費的話很多人都去使用

所以這些代理IP很不穩定

如果你有錢的話

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

直接去買就行了

不想花錢呢?

可以搞一個IP代理池

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

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

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

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

道理都懂

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

有沒有現成的?

不瞞你說

小帥b發現了一個不錯的開源 ip 代理池

github.com/Python3WebSp

如何使用呢

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

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

接著打開項目中的 setting.py

在這裡可以配置相關信息

比如 Redis 的地址密碼相關

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

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

安裝相關所需的 python 模塊

pip3 install -r requirements.txt

接下來開啟你的 redis

redis 的默認埠就是 6379

接著就可以運行 run.py 了

代理池開始運行
* 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
...

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

AttributeError: int object has no attribute items

更新一下 redis 版本

pip3 install redis==2.10.6

運行 run.py

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

項目跑起來之後

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

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

http://localhost:5555/random

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

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

import requests
?
PROXY_POOL_URL = http://localhost:5555/random
?
def get_proxy():
try:
response = requests.get(PROXY_POOL_URL)
if response.status_code == 200:
return response.text
except ConnectionError:
return None

這樣

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

那麼下次誰還敢封你ip

你就拿出你的代理ip

繼續爬唄

peace

帥b老仙

法力無邊

給我點贊,繼續發力!


推薦閱讀:

TAG:Python入門 | Python開發 | python爬蟲 |