Python+scrapy代理接入之聚合代理

我们在做爬虫的很多时候,都会遇到一个问题,那就是爬取一段时间后突然不能爬了,那多半是你的IP被封掉了,此时我们就可以接入代理进行数据爬去,下面以聚合代理为例,下篇文章接着讲讯代理的接入。

Python+scrapy代理接入之聚合代理

聚合代理middleware的代码配置如下

<code>import datetime
import requests
import json
class MaoyanJuheProxyMiddleware(object):
"""
聚合代理:http://daili.spbeen.com/
"""
# ==============代理初始化============
def __init__(self):
# 代理API
self.url = "http://daili.spbeen.com/get_api_json/?token=4nZufMcvqklMfwNjmiIXSseJ&num=1"

# 初始化代理IP为空字符串
self.proxyip = ""

# 获取当前时间与前一分钟的时间差
self.expire_datatime = datetime.datetime.now() - datetime.timedelta(minutes=1)

# ==============获取代理IP============
def _get_ProxyIP(self):
# 获取代理响应内容
proxy_respon = requests.get(url=self.url)

# 将代理响应内容转换为json格式
proxy_info = json.loads(proxy_respon.text)
proxy = proxy_info["data"][0]
self.proxyip = proxy["proxyip"]
self.expire_datatime = datetime.datetime.now() - datetime.timedelta(minutes=1)

# ==============验证代理IP============
def _check_expire(self):
# 判断当前时间是否大于初始时间
if datetime.datetime.now() >= self.expire_datatime:

# 再次获取代理IP
self._get_ProxyIP()

def process_request(self,spider,request):
self._check_expire()

# 将自身IP修改为代理IP
request.meta["proxy"] = "http://" + self.proxyip
/<code>

同时,我们还需要在setting文件里进行配置,代码如下

<code>DOWNLOADER_MIDDLEWARES = {
# 'maoyan.middlewares.MaoyanDownloaderMiddleware': 543,
'maoyan.middlewares.MaoyanJuheProxyMiddleware': 543,
}/<code>

最后,接入代理之后继续爬取数据是不是很爽啊!


分享到:


相關文章: