方法一:

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

  1. import scrapy
  2.  
  3. class MimvpSpider(scrapy.spiders.Spider):
  4. name = "mimvp"
  5. allowed_domains = ["mimvp.com"]
  6. start_urls = [
  7. "http://proxy.mimvp.com/exist.php",
  8. "https://proxy.mimvp.com/exist.php",
  9. ]
  10.  
  11. ## 代理设置方式1:直接在代理里设置
  12. def start_requests(self):
  13. urls = [
  14. "http://proxy.mimvp.com/exist.php",
  15. "https://proxy.mimvp.com/exist.php",
  16. ]
  17. for url in urls:
  18. meta_proxy = ""
  19. if url.startswith("http://"):
  20. meta_proxy = "http://180.96.27.12:88" # http代理
  21. elif url.startswith("https://"):
  22. meta_proxy = "http://109.108.87.136:53281" # https代理
  23.  
  24. yield scrapy.Request(url=url, callback=self.parse, meta={'proxy': meta_proxy})
  25.  
  26. def parse(self, response):
  27. mimvp_url = response.url # 爬取时请求的url
  28. body = response.body # 返回网页内容
  29.  
  30. print("mimvp_url : " + str(mimvp_url))
  31. print("body : " + str(body))

方法二:

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

middlewares.py

  1. ## 代理设置方式2: 通过 middlewares.py + settings.py 配置文件设置
  2. ## mimvp custom by yourself
  3. class ProxyMiddleware(object):
  4. def process_request(self,request,spider):
  5.  
  6. if request.url.startswith("http://"):
  7. request.meta['proxy']="http://180.96.27.12:88" # http代理
  8. elif request.url.startswith("https://"):
  9. request.meta['proxy']="http://109.108.87.136:53281" # https代理
  10.  
  11. # # proxy authentication
  12. # proxy_user_pass = "USERNAME:PASSWORD"
  13. # encoded_user_pass = base64.encodestring(proxy_user_pass)
  14. # request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass

settings.py

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

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

  1. [转] Ubuntu的apt-get 设置代理的方法

    点击阅读原文 新立得软件管理器这种图形化的代理设置很明了,这里介绍下终端命令行的网络代理设置,这样大家就可以通过代理进行apt-get了. 方法一: 如果只是想临时使用http代理,可以在使用apt- ...

  2. Ubuntu设置代理的方法

    用过Linux的都知道,众多的PROXY配置,让人应接不暇,本文列出常见的一些PROXY的配置 1.apt-get proxy 的配置sudo gedit /etc/apt/apt.conf NOTE ...

  3. selenium phantomjs 设置代理ip方法

    最近遇到phantomjs动态更换ip的功能,在知乎上看到一篇不错的文章,顺手记下来以备后用 phantomjs selenium 如何动态修改代理? 可以这样做(Python代码): # 不使用代理 ...

  4. scrapy设置代理

    在爬取网站内容的时候,最常遇到的问题是:网站对IP有限制,会有防抓取功能,最好的办法就是IP轮换抓取(加代理) 下面来说一下Scrapy如何配置代理,进行抓取 1.在Scrapy工程下新建“middl ...

  5. 为YUM设置代理的方法

    http://momo-fedora.blog.163.com/blog/static/1161345982009329611312/

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

    前戏 os.environ()简介 os.environ()可以获取到当前进程的环境变量,注意,是当前进程. 如果我们在一个程序中设置了环境变量,另一个程序是无法获取设置的那个变量的. 环境变量是以一 ...

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

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

  8. 使用Chrome浏览器设置XX-net的方法

        以下介绍使用Chrome浏览器设置XX-net的方法 1.下载并安装谷歌浏览器. 2.打开https://github.com/XX-net/XX-Net/blob/master/code/d ...

  9. C# WebBrowser设置代理

    WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE. code: class IEProxy { //设置代理选项 private const int INTERNET_OPTI ...

随机推荐

  1. 使用 Java8 Optional 的正确姿势(转)

    我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 NullPointException 的问题, 于是代 ...

  2. (细节)My SQL中主键为0和主键自排约束的关系

    开始不设置主键 表的设计如下: 如果id的位置有好几个0的话:设置主键并且自动排序时,0会从1开始递增: Insert 进去 id = 0的数据,数据会从实际的行数开始增加,和从0变化不一样: 现在主 ...

  3. 使用STM32Cube在STM32F7开发板上实现SD+Freertos+Fatfs

    简介 最近项目中可能需要使用到SD卡,所以需要对SD卡的配置和使用调研,在配置过程中遇到了一些问题,在此记录一下. STM32Cube配置 Pinout 只需要注意绿色部分的设定 Clock配置 这里 ...

  4. BloomFilter——大规模数据处理利器

    Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法.通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合. 一.实例 为了说明Blo ...

  5. 关于python中phantomjs无法访问网页的处理

    笔者使用的系统是linux ubuntu,最近在学习爬虫的过程中遇到了一个抓狂的问题,我尝试使用selenium加phantomjs来登陆网页的时候,Pythony一直提示selenium无法找到元素 ...

  6. [Linux]Linux 下的 Docker 安装与使用

    一.安装与配置 1.设置阿里云镜像源 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/cen ...

  7. java基础学习周计划之3--每周一练

    每周一练第一周 一. 关键代码:1.斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...数列第一项和第二项是1, 从第三项开始, ...

  8. go语言 nsq源码解读三 nsqlookupd源码nsqlookupd.go

    从本节开始,将逐步阅读nsq各模块的代码. 读一份代码,我的思路一般是: 1.了解用法,知道了怎么使用,对理解代码有宏观上有很大帮助. 2.了解各大模块的功能特点,同时再想想,如果让自己来实现这些模块 ...

  9. 【codeforces 698B】 Fix a Tree

    题目链接: http://codeforces.com/problemset/problem/698/B 题解: 还是比较简单的.因为每个节点只有一个父亲,可以直接建反图,保证出现的环中只有一条路径. ...

  10. BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP

    BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP 题意: N头牛,每头牛有一个权值,选择一些牛,要求连续的不能超过k个,求选择牛的权值和最大值 分析: 先考虑暴力DP,f ...