Python爬虫之scrapy框架中ip代理池的设置

  • 开放代理

class IpProxyDownloadMiddleware(object):
    PROXIES = ['110.52.235.131:9999','110.52.235.249:9999','112.17.38.141:3128']

    def process_request(self,request,spider):
        proxy = random.choice(self.PROXIES)
        request.meta['proxy'] = 'http://'+proxy

注:上面在设置代理时,要添加协议名称,http://https://,否则会报错。

twisted.web.error.SchemeNotSupported: Unsupported scheme: b''
  • 独享代理

    class IpProxyDownloadMiddleware(object):
      def process_request(self,request,spider):
          proxy = "121.199.6.124:16816"
          user_password = "970138074:rcdj35ur"
          request.meta['proxy'] = 'http://'+proxy
          #bytes
          bs64_user_password = base64.b64encode(user_password.encode('utf-8'))
          request.headers['Proxy-Authorization'] = 'Basic' + bs64_user_password.decode('utf-8')

     

Scrapy是一个开源的网络爬虫框架,主要用于爬取网站数据并提取结构化信息。在使用Scrapy进行爬取数据的过程,可能需要使用代理来应对目标网站的反爬虫策略,例如限制同一IP地址的频繁访问。 在Scrapy使用IP代理,可以采取以下步骤: 1. **准备代理**:首先需要有一个代理服务,可以是一个简单的代理列表,也可以是一个复杂的代理系统,该系统可以动态地检测代理的可用性,并提供有效代理。 2. **安装第三方库**:在Scrapy项目,可能需要安装一些第三方库,比如`scrapy-proxies`,帮助Scrapy随机使用代理。 3. **配置代理使用**:在Scrapy的`settings.py`配置文件,可以配置代理使用。例如,可以通过间件来设置请求使用代理Scrapy默认有一个代理间件`HttpProxyMiddleware`,可以用来设置请求的代理。 4. **动态代理选择**:如果是基于代理的动态代理选择,你可能需要自定义一个间件来实现从代理获取代理,并设置到每个请求。 以下是一个简化的配置示例: ```python # settings.py HTTP_PROXY = 'http://代理IP:端口' # 或者自定义间件,通过代理动态获取代理 class ProxyMiddleware(object): def process_request(self, request, spider): proxy = get_proxy_from_pool() # 从代理获取一个代理 if proxy: request.meta['proxy'] = proxy ``` 在实际使用,需要确保代理服务的稳定性和代理的可用性,并且要合理设置代理的轮换策略,以避免触发目标网站的异常检测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值