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,
}

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

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

https://github.com/kohn/HttpProxyMiddleware https://github.com/cocoakekeyu/autoproxy http://blog.cs...

scrapy代理的配置方法

根据最新的scrapy官方文档,scrapy爬虫框架的代理配置有以下两种方法:一.使用中间件DownloaderMiddleware进行配置使用Scrapy默认方法scrapy startprojec...

scrapy设置代理proxy

http://stackoverflow.com/questions/4710483/scrapy-and-proxies 增加文件middlewares.py放置在setting.py平行...

给Scrapy添加代理

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

Scrapy的Ip代理的配置(未完成)

1、编写代理中间件 这是最直接的方式,也是能够比较快速实现的。前提是你需要拥有可用的代理ip。网上有一些免费的代理ip资源可以使用,但是往往都不稳定。如果有条件可以买一些IP代理来使用。 代理中间件...

python爬虫之Scrapy 使用代理配置

http://www.pythontab.com/html/2014/pythonweb_0326/724.html 在爬取网站内容的时候,最常遇到的问题是:网站对IP有限制,会...

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

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

http-proxy-middleware

http-proxy-middlewareInstall $ npm install http-proxy-middleware --save-devCore concept context ...

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

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

天天写业务代码,如何成为技术大牛?

摘要: 写在前面 不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scrapy中使用代理
举报原因:
原因补充:

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