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

 

咱們上次說了假裝頭部html

 

python

 

python爬蟲17 | 據說你又被封 ip 了,你要學會假裝好本身,此次說說假裝你的頭部git

 

讓本身的 python 爬蟲僞裝是瀏覽器github

 

小帥b主要是想讓你知道redis

 

在爬取網站的時候瀏覽器

 

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

 

 

其實dom

 

這和泡妞差很少ide

 

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

 

她的興趣是什麼

 

她喜歡什麼

 

而不是本身感動本身

 

單方面的瘋狂索取

 

 

哦..

 

扯遠了

 

咱們回到反爬蟲

 

此次教你怎麼假裝本身的 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 代理池

 

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

 

如何使用呢

 

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

 

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

 

接着打開項目中的 setting.py

 

在這裏能夠配置相關信息

 

好比 Redis 的地址密碼相關

 

(若是你以前沒有使用過 redis 的話,能夠到以下地址下載 https://github.com/MicrosoftArchive/redis/releases

 

 

 

接着在你 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老仙

法力無邊

 

 

 

相關文章
相關標籤/搜索