实践出真知-scrapy集成ip代理(以阿布云为例)
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代理(以阿布云为例)相关推荐
- 实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例
转载自 实践出真知之Spring Cloud之基于Eureka.Ribbon.Feign的真实案例 Eureka是Spring Cloud Eureka的简称,是Netflix提供的组件之一.通过E ...
- Python爬虫Scrapy框架IP代理的配置与调试
在调试爬虫的时候,新手都会遇到关于ip的错误,好好的程序突然报错了,怎么解决,关于ip访问的错误其实很好解决,但是怎么知道解决好了呢?怎么确定是代理ip的问题呢?由于笔者主修语言是Java,所以有些解 ...
- 反思供应链项目:实践出真知 多反思提升效率的方法
获得的提升: 代码能力 沟通能力 思维能力 变通能力 使用代码工具的能力 知识面 都有了提升 得到的认知: 1.实践出真知 2.实际做了才是自己的,只是看明白了,不是自己的 3.加班加的也是 ...
- qnap raid5升级raid6_实践出真知!100TB的RAID5到底能否重建成功?
实践出真知!100TB的RAID5到底能否重建成功? 2019-04-04 18:40:37 390点赞 996收藏 419评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励 ...
- 分享推荐几家适合爬虫的代理ip(飞蚁代理、阿布云、亿洲网络)
多年的爬虫总结,如今要改行了,分享一下我觉得好用的几家爬虫IP代理. 飞蚁代理:http://www.feiyiproxy.com 阿布云:https://www.abuyun.com/ 亿洲网络:h ...
- [Python3网络爬虫开发实战] 付费讯代理、阿布云代理的使用
相对免费代理来说,付费代理的稳定性相对更高一点,本节介绍一下爬虫付费代理的相关使用过程. 付费代理分类 在这里将付费代理分为两类: 提供接口获取海量代理,按天或者按量付费,如讯代理 搭建了代理隧道,直 ...
- Python网络爬虫--Scrapy使用IP代理池
自动更新IP池 写个自动获取IP的类proxies.py,执行一下把获取的IP保存到txt文件中去: 代码 # *-* coding:utf-8 *-* import requests from bs ...
- 实践出真知:博云微服务经验之避坑指南
目前每个企业都想做微服务,但如何做好微服务?微服务改造过程中有哪些必须重视的问题?博云通过自己的实践,总结了一些经验之谈.日前InfoQ对博云高级解决方案架构师赵安全就此话题进行了专访,以兹各位对微服 ...
- Scrapy day20-2 IP代理
前言 ---------------------为什么设置代理IP-------------------------------------------------- 代理的作用 突破自身的IP访问限 ...
最新文章
- 用友公司Java面试题(含答案)
- 马云:很多P2P公司披着互联网金融的外衣做非法金融服务
- 阐述Linux动态库的显式调用
- 这也太狠了吧!500套Java实用代码,不论工作学习都能用到!
- C语言编译流程:预处理、编译、汇编、链接
- ASP.NET读取(导入)CSV文件[献给菜鸟的我们]
- 【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)
- java如何写安卓接口文档_android、java制作sdk以及自动生成文档
- php 备份数据库(生成word,excel,json,xml,sql)
- Redis高可用分布式内部交流(九)
- Java Platform SE 8 中文文档
- 第四章节 窗体应用(windows应用程序)
- keras优化算法_Keras实现两个优化器:Lookahead和LazyOptimizer
- matlab 水箱fuzzy,matlab中使用fuzzy工具箱
- 心智与认知(1): 反馈循环(Feedback loop)
- mongodb mapreduce分析
- Dark Crystal RAT的新变种分析
- SourceTree Bitbucket 2021
- 1060驱动java_ubuntu16.04 安装 GTX 1060 显卡驱动
- android业余手机开发,赚钱心得
热门文章
- Android黑名单来电管理
- 数据库审计和日志审计的三大区别分析
- AttributeError: module ‘scipy.misc‘ has no attribute ‘toimage‘
- 研磨设计模式之外观模式(Facade)(解决方案)
- 欧洲共同语言参考标准等级C1,CEFR(欧洲共同语言参考标准)与英语考试换算标准...
- ros安装并测试是否安装成功
- 研究生的英文分类和说法
- llama.cpp LLM模型 windows cpu安装部署;运行LLaMA2模型测试
- JavaScript之DOM树
- 【iOS开发】记录一次苹果2.1大礼包被拒绝3次历时12天的坑逼上架历程