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,

继续爬呗!


分享到:


相關文章: