scrapy设置代理的方法

方法一:

直接在spider文件下设置代理,通过传参的方式设置在Request中

import scrapy

class MimvpSpider(scrapy.spiders.Spider):
    name = "mimvp"
    allowed_domains = ["mimvp.com"]
    start_urls = [
        "http://proxy.mimvp.com/exist.php",
        "https://proxy.mimvp.com/exist.php",
    ]

    ## 代理设置方式1:直接在代理里设置
    def start_requests(self):
        urls = [
            "http://proxy.mimvp.com/exist.php",
            "https://proxy.mimvp.com/exist.php",
        ]
        for url in urls:
            meta_proxy = ""
            if url.startswith("http://"):
                meta_proxy = "http://180.96.27.12:88"           # http代理
            elif url.startswith("https://"):
                meta_proxy = "http://109.108.87.136:53281"      # https代理

            yield scrapy.Request(url=url, callback=self.parse, meta={‘proxy‘: meta_proxy})

    def parse(self, response):
        mimvp_url = response.url                    # 爬取时请求的url
        body = response.body                        # 返回网页内容

        print("mimvp_url : " + str(mimvp_url))
        print("body : " + str(body))

方法二:

利用中间件middlewares.py+settings配置

middlewares.py

## 代理设置方式2: 通过 middlewares.py + settings.py 配置文件设置
## mimvp custom by yourself
class ProxyMiddleware(object):
    def process_request(self,request,spider):

        if request.url.startswith("http://"):
            request.meta[‘proxy‘]="http://180.96.27.12:88"          # http代理
        elif request.url.startswith("https://"):
            request.meta[‘proxy‘]="http://109.108.87.136:53281"         # https代理

#         # proxy authentication
#         proxy_user_pass = "USERNAME:PASSWORD"
#         encoded_user_pass = base64.encodestring(proxy_user_pass)
#         request.headers[‘Proxy-Authorization‘] = ‘Basic ‘ + encoded_user_pass

settings.py

# Enable or disable downloader middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
# 优先级越小越先执行
DOWNLOADER_MIDDLEWARES = {
    ‘scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware‘: 110,
    ‘mimvp_proxy_python_scrapy.middlewares.ProxyMiddleware‘: 100,
}

原文地址:https://www.cnblogs.com/tangkaishou/p/10792007.html

时间: 2024-10-10 12:19:00

scrapy设置代理的方法的相关文章

Ubuntu设置代理的方法

用过Linux的都知道,众多的PROXY配置,让人应接不暇,本文列出常见的一些PROXY的配置 1.apt-get proxy 的配置sudo gedit /etc/apt/apt.conf NOTE:系统里有可能没有这个文件,直接建立一个就行输入下面的proxy的配置信息就行Acquire::http::Proxy "http://username:[email protected]:port";也可以增加ftp和https的proxyAcquire::ftp::Proxy &quo

网络爬虫之scrapy框架设置代理

前戏 os.environ()简介 os.environ()可以获取到当前进程的环境变量,注意,是当前进程. 如果我们在一个程序中设置了环境变量,另一个程序是无法获取设置的那个变量的. 环境变量是以一个字典的形式存在的,可以用字典的方法来取值或者设置值. os.environ() key字段详解 windows: os.environ['HOMEPATH']:当前用户主目录. os.environ['TEMP']:临时目录路径. os.environ[PATHEXT']:可执行文件. os.en

网络爬虫之scrapy框架详解,scrapy框架设置代理

twisted介绍 Twisted是用Python实现的基于事件驱动的网络引擎框架,scrapy正是依赖于twisted, 它是基于事件循环的异步非阻塞网络框架,可以实现爬虫的并发. twisted是什么以及和requests的区别: request是一个python实现的可以伪造浏览器发送Http请求的模块,它封装了socket发送请求 twisted是基于时间循环的异步非阻塞的网络框架,它也封装了socket发送请求,但是他可以单线程的完成并发请求. twisted的特点是: 非阻塞:不等待

C# 为WebBrowser设置代理,打开网页

WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE的,相信做.NET的人都知道. 今天的主题,和上一篇文章应该是差不多的,都是通过代理来实现功能的. 请看下面的代码: //1.定义代理信息的结构体 public struct Struct_INTERNET_PROXY_INFO         {             public int dwAccessType;             public IntPtr proxy;             public 

浏览器怎么设置代理IP?四种浏览器设置代理IP的方法

有时候上网需要更换IP,但是本地IP不需要更换,只是通过更换浏览器IP的方式来隐藏自己的IP,突破网络的限制,那么浏览器怎么设置代理IP?不同的浏览器设置代理IP的方法略有不同,下面黑洞代理小编整理了四种浏览器设置代理IP的方法.1.IE浏览器IE浏览器无疑是最常用的浏览器,而像360浏览器.搜狗浏览器.QQ浏览器这样的浏览器都是基于IE内核开发的浏览器,设置代理IP的方法也大同小异.IE浏览器上选择"工具--Internet选项--连接--局域网设置".在"局域网设置&qu

Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1.设置系统代理(Windows.Linux.MacOS) 2.设置代理插件(Chrome.Chromium.Firefox.Opera.QQ等浏览器) 3.第三方软件设置代理,如 Proxifier.花刺代理.代理猎手.QQ设置代理 4.编程使用代理,请见:代码示例 一.设置代理上网的方法汇总 1.Windows 设置代理 1)Windows 系统代理设置 (局部代理) 2)Windows 7 /

linux系统(ubuntu)下使用ssr上网的方法之一:设置代理

前因: 1.最近因为工作的原因,需要在linux系统下开发. 2.开发环境需要一个SSR 过程: 之前的工作环境(windows)里已经有一个SSR客户端,本来是打算在linux里也装一个,后来觉得麻烦.就用局域网代理的方法来做了:(注意,此方法使用前提是,请先准备一个可以允许局域网放问的SSR客户端) 方法1.在计算机里搜索 全部设置->网络->网络代理 ,在这里设置. 方法2. 在全局环境变量 $ sudo vi /etc/environment 里增加: http_proxy="

phantomjs 设置代理

phantomjs 可通过以下设置代理ip #coding=utf-8import osimport reimport timeimport requestsfrom scrapy.selector import HtmlXPathSelectorfrom scrapy.http import HtmlResponsefrom selenium import webdriverfrom selenium.webdriver.common.proxy import ProxyType import

设置代理的步骤

设置代理的几个步骤 (1)如果一个视图中的某个按钮被点击了,这个时候需要去主控制器中刷新数据.有一种做法是,让这个视图拥有控制器这个属性,然后当按钮被点击的时候去利用该属性去做刷新数据的操作.另一种做法是把控制器设置为这个视图的代理,当视图中的某个按钮被点击的时候,通知它的代理(主控制器)去干刷新数据这件事. (2)要成为代理是由条件的,有以下几个步骤 1).双方约定一个协议(代理协议,注意命名规范),在视图中自定义一个协议,协议中提供一个方法. @protocol YYHeaderViewDe