scrapy中使用代理

原创 2015年07月10日 11:27:01

Scrapy中有多个内置的下载器中间件,HttpProxyMiddleware 就是其中的代理中间件。

在scrapy中使用自己的代理中间件主要有2个步骤

    1:编写自己的代理中间件:

# -*- coding: utf-8 -*-

import base64
import random
import logging

from dcs.settings import PROXIES


class ProxyMiddleware(object):
    """cover scrapy's HttpProxyMiddleware.
       if 'proxy' in request.meta, HttpProxyMiddleware don't do anything.
     """
    def process_request(self, request, spider):
        """overwrite method"""
        if 'proxy' in request.meta:
            return
        proxy = random.choice(PROXIES)
        request.meta['proxy'] = "http://%s" % proxy['ip_port']
        encoded_user_pass = base64.encodestring(proxy['user_pass'])
        request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
        logging.info('[ProxyMiddleware] proxy:%s is used', proxy)

    2:在配置settings.py文件中启用自己的代理中间件,且配置的执行顺序要在HttpProxyMiddleware 前面。(配置为dict, key为类路径,value为执行顺序。if 'proxy' in request.meta 内置的代理中间件就不会做操作了。内置中间件都是默认开启的。)

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware'110,
    'pythontab.middlewares.ProxyMiddleware'100,
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

npm模块之http-proxy-middleware使用教程(译)

单线程node.js代理中间件,用于连接,快速和浏览器同步Node.js代理简单。 轻松配置代理中间件连接,快速,浏览器同步等。由流行的Nodejitsu http代理提供。TL;DR代理/ api请...
  • xmloveth
  • xmloveth
  • 2017年02月24日 18:09
  • 19839

http-proxy-middleware

http-proxy-middlewareInstall $ npm install http-proxy-middleware --save-devCore concept context ...
  • crasslandWolf
  • crasslandWolf
  • 2016年04月28日 18:39
  • 5620

使用http-proxy-middleware解决前端开发中跨域的问题

一、使用http-proxy-middleware中间件解决跨域问题 本案例中使用基本的webpack及axios请求数据的插件1、后端服务是用tornado创建的一个服务(可以根据自己熟悉的搭建...
  • kuangshp128
  • kuangshp128
  • 2017年08月30日 12:57
  • 2139

scrapy: 使用HTTP代理绕过网站反爬虫机制

https://github.com/kohn/HttpProxyMiddleware https://github.com/cocoakekeyu/autoproxy http://blog.cs...
  • letunihao
  • letunihao
  • 2016年12月19日 15:49
  • 4438

scrapy设置代理proxy

http://stackoverflow.com/questions/4710483/scrapy-and-proxies 增加文件middlewares.py放置在setting.py平行...
  • haipengdai
  • haipengdai
  • 2016年03月24日 16:50
  • 10508

scrapy代理的配置方法

根据最新的scrapy官方文档,scrapy爬虫框架的代理配置有以下两种方法:一.使用中间件DownloaderMiddleware进行配置使用Scrapy默认方法scrapy startprojec...
  • Jutal_ljt
  • Jutal_ljt
  • 2017年01月15日 11:28
  • 2822

Scrapy爬虫框架使用IP代理池

一、手动更新IP池方法一:1.在settings配置文件中新增IP池:IPPOOL=[ {"ipaddr":"61.129.70.131:8080"}, {"ipaddr":"...
  • Gooooa
  • Gooooa
  • 2017年07月05日 15:34
  • 1662

给Scrapy添加代理

给请求添加代理有2种方式,第一种重写start_request方法,第二种是添加download中间件。下面分别介绍这2种方式。 一.重写start_request方法 比较简单,只是在met...
  • loguat
  • loguat
  • 2017年07月07日 17:10
  • 1010

python爬虫之Scrapy 使用代理配置

http://www.pythontab.com/html/2014/pythonweb_0326/724.html 在爬取网站内容的时候,最常遇到的问题是:网站对IP有限制,会...
  • oMingZi12345678
  • oMingZi12345678
  • 2016年05月01日 00:20
  • 1228

Scrapy爬虫(八):中间件的使用实例

Scrapy爬虫(八):中间件的使用实例Scrapy爬虫八中间件的使用实例 user-agent 最简单的中间件 settingspy中配置中间件 本章将介绍最简单的中间件user-agent中间...
  • yancey_blog
  • yancey_blog
  • 2016年12月27日 15:44
  • 3936
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scrapy中使用代理
举报原因:
原因补充:

(最多只允许输入30个字)