2019独角兽企业重金招聘Python工程师标准>>>

一、前言

有个项目需要爬取证券协会,对方有ip屏蔽。所以我需要在scrapy中实现ip自动切换,才能够完成爬取任务。

在此之前,我用过第三方库scrapy-proxys加上芝麻ip的代理api接口,可能是之前代码没有调整好,导致的没有能够成功。(后面有机会再测试)。

二、阿布云范例

阿布云官方给出了python和scrapy的示例代码

python3示例

from urllib import request# 要访问的目标页面targetUrl = "http://test.abuyun.com/proxy.php"# 代理服务器proxyHost = "http-dyn.abuyun.com"proxyPort = "9020"# 代理隧道验证信息proxyUser = "H01234567890123D"proxyPass = "0123456789012345"proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {"host" : proxyHost,"port" : proxyPort,"user" : proxyUser,"pass" : proxyPass,}proxy_handler = request.ProxyHandler({"http"  : proxyMeta,"https" : proxyMeta,})#auth = request.HTTPBasicAuthHandler()#opener = request.build_opener(proxy_handler, auth, request.HTTPHandler)opener = request.build_opener(proxy_handler)request.install_opener(opener)resp = request.urlopen(targetUrl).read()print (resp)

上面的是原生写法,下面提供scrapy的中间件写法

scrapy中间件

 import base64# 代理服务器proxyServer = "http://http-dyn.abuyun.com:9020"# 代理隧道验证信息proxyUser = "H01234567890123D"proxyPass = "0123456789012345"# for Python2proxyAuth = "Basic " + base64.b64encode(proxyUser + ":" + proxyPass)# for Python3#proxyAuth = "Basic " + base64.urlsafe_b64encode(bytes((proxyUser + ":" + proxyPass), "ascii")).decode("utf8")class ProxyMiddleware(object):def process_request(self, request, spider):request.meta["proxy"] = proxyServerrequest.headers["Proxy-Authorization"] = proxyAuth

这里在scrapy项目中的Middleware里面写即可。

三、正式集成

在项目的middlewares.py中新增类:

import base64""" 阿布云ip代理配置,包括账号密码 """
proxyServer = "http://http-dyn.abuyun.com:9020"
proxyUser = "HWFHQ5YP14Lxxx"
proxyPass = "CB8D0AD56EAxxx"
# for Python3
proxyAuth = "Basic " + base64.urlsafe_b64encode(bytes((proxyUser + ":" + proxyPass), "ascii")).decode("utf8")class ABProxyMiddleware(object):""" 阿布云ip代理配置 """def process_request(self, request, spider):request.meta["proxy"] = proxyServerrequest.headers["Proxy-Authorization"] = proxyAuth

然后再到settings.py中开启中间件:

DOWNLOADER_MIDDLEWARES = {#'Securities.middlewares.SecuritiesDownloaderMiddleware': None,'Securities.middlewares.ABProxyMiddleware': 1,
}

四、注意事项

阿布云动态ip默认是1秒钟请求5次,(可以加钱,购买多次)。所以,当他是默认5次的时候,我需要对爬虫进行限速,还是在settings.py中,空白处新增如下代码:

""" 启用限速设置 """
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 0.2  # 初始下载延迟
DOWNLOAD_DELAY = 0.2  # 每次请求间隔时间

当然了,如果加钱购买多次的话,可以不用考虑限速的问题。

即可完成阿布云动态代理ip在scrapy中的的集成,尽情的爬吧!

转载于:https://my.oschina.net/RanboSpider/blog/1785626

实践出真知-scrapy集成ip代理(以阿布云为例)相关推荐

  1. 实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例

    转载自  实践出真知之Spring Cloud之基于Eureka.Ribbon.Feign的真实案例 Eureka是Spring Cloud Eureka的简称,是Netflix提供的组件之一.通过E ...

  2. Python爬虫Scrapy框架IP代理的配置与调试

    在调试爬虫的时候,新手都会遇到关于ip的错误,好好的程序突然报错了,怎么解决,关于ip访问的错误其实很好解决,但是怎么知道解决好了呢?怎么确定是代理ip的问题呢?由于笔者主修语言是Java,所以有些解 ...

  3. 反思供应链项目:实践出真知 多反思提升效率的方法

    获得的提升: 代码能力  沟通能力  思维能力  变通能力  使用代码工具的能力  知识面 都有了提升 得到的认知: 1.实践出真知 2.实际做了才是自己的,只是看明白了,不是自己的 3.加班加的也是 ...

  4. qnap raid5升级raid6_实践出真知!100TB的RAID5到底能否重建成功?

    实践出真知!100TB的RAID5到底能否重建成功? 2019-04-04 18:40:37 390点赞 996收藏 419评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励 ...

  5. 分享推荐几家适合爬虫的代理ip(飞蚁代理、阿布云、亿洲网络)

    多年的爬虫总结,如今要改行了,分享一下我觉得好用的几家爬虫IP代理. 飞蚁代理:http://www.feiyiproxy.com 阿布云:https://www.abuyun.com/ 亿洲网络:h ...

  6. [Python3网络爬虫开发实战] 付费讯代理、阿布云代理的使用

    相对免费代理来说,付费代理的稳定性相对更高一点,本节介绍一下爬虫付费代理的相关使用过程. 付费代理分类 在这里将付费代理分为两类: 提供接口获取海量代理,按天或者按量付费,如讯代理 搭建了代理隧道,直 ...

  7. Python网络爬虫--Scrapy使用IP代理池

    自动更新IP池 写个自动获取IP的类proxies.py,执行一下把获取的IP保存到txt文件中去: 代码 # *-* coding:utf-8 *-* import requests from bs ...

  8. 实践出真知:博云微服务经验之避坑指南

    目前每个企业都想做微服务,但如何做好微服务?微服务改造过程中有哪些必须重视的问题?博云通过自己的实践,总结了一些经验之谈.日前InfoQ对博云高级解决方案架构师赵安全就此话题进行了专访,以兹各位对微服 ...

  9. Scrapy day20-2 IP代理

    前言 ---------------------为什么设置代理IP-------------------------------------------------- 代理的作用 突破自身的IP访问限 ...

最新文章

  1. 用友公司Java面试题(含答案)
  2. 马云:很多P2P公司披着互联网金融的外衣做非法金融服务
  3. 阐述Linux动态库的显式调用
  4. 这也太狠了吧!500套Java实用代码,不论工作学习都能用到!
  5. C语言编译流程:预处理、编译、汇编、链接
  6. ASP.NET读取(导入)CSV文件[献给菜鸟的我们]
  7. 【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)
  8. java如何写安卓接口文档_android、java制作sdk以及自动生成文档
  9. php 备份数据库(生成word,excel,json,xml,sql)
  10. Redis高可用分布式内部交流(九)
  11. Java Platform SE 8 中文文档
  12. 第四章节 窗体应用(windows应用程序)
  13. keras优化算法_Keras实现两个优化器:Lookahead和LazyOptimizer
  14. matlab 水箱fuzzy,matlab中使用fuzzy工具箱
  15. 心智与认知(1): 反馈循环(Feedback loop)
  16. mongodb mapreduce分析
  17. Dark Crystal RAT的新变种分析
  18. SourceTree Bitbucket 2021
  19. 1060驱动java_ubuntu16.04 安装 GTX 1060 显卡驱动
  20. android业余手机开发,赚钱心得

热门文章

  1. Android黑名单来电管理
  2. 数据库审计和日志审计的三大区别分析
  3. AttributeError: module ‘scipy.misc‘ has no attribute ‘toimage‘
  4. 研磨设计模式之外观模式(Facade)(解决方案)
  5. 欧洲共同语言参考标准等级C1,CEFR(欧洲共同语言参考标准)与英语考试换算标准...
  6. ros安装并测试是否安装成功
  7. 研究生的英文分类和说法
  8. llama.cpp LLM模型 windows cpu安装部署;运行LLaMA2模型测试
  9. JavaScript之DOM树
  10. 【iOS开发】记录一次苹果2.1大礼包被拒绝3次历时12天的坑逼上架历程