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...

python scrapy 网络采集使用代理的方法

http://www.sharejs.com/codes/python/8309 1.在Scrapy工程下新建“middlewares.py” # Import...

Scrapy爬虫:模拟浏览器和使用代理

采用settings.py的方式进行设置user agent和proxy列表 http://www.tuicool.com/articles/VRfQR3U http://jinbitou.net...
  • cbjcry
  • cbjcry
  • 2017-04-13 11:19
  • 2328

scrapy 使用代理

# Importing base64 library because we'll need it ONLY #in case if the proxy we are going to use requ...
  • mldxs
  • mldxs
  • 2013-03-21 15:08
  • 3017

Scrapy研究探索(七)——如何防止被ban之策略大集合

话说在尝试设置download_delay小于1,并且无任何其他防止被ban的策略之后,我终于成功的被ban了。如下: 敌退我进,敌攻我挡。 本篇博客主要研究使用防止被ban的几大策略以及在s...

机器学习入门:线性回归及梯度下降

本文会讲到: (1)线性回归的定义 (2)单变量线性回归 (3)cost function:评价线性回归是否拟合训练集的方法 (4)梯度下降:解决线性回归的方法之一 (5)featu...

Scrapy爬虫入门教程九 Item Pipeline(项目管道)

Scrapy爬虫入门教程九 Item Pipeline(项目管道)

Linux如何查看进程、杀死进程、启动进程等常用命令

关键字: linux 查进程、杀进程、起进程 1.查进程     ps命令查找与进程相关的PID号:     ps a 显示现行终端机下的所有程序,包括其他用户的程序。     ps -A 显...

NumPy的详细教程

NumPy的详细教程 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看 Python Tutorial . 如果你想要运行教程中的示例,你至少...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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