scrapy怎么让队列中多个请求共用一个代理ip?

环境背景: 2个服务器, celery+rabbitmq + python+ scrapy爬虫框架

共有6000个url, 12点的时候启动celery产生任务和队列派给两个服务器去爬, 每次处理100个url, 我用中间件拿到10个代理ip携带上去请求, 100个处理完后, 继续处理队列中的下一组100个url, 但是为什么不读取新的ip呢? 这样6000个url跑完, 永远用的还是第一次那10个ip, 目前我是在process_request函数中每个请求都去读取一个有ip的文本, 而文本定时更换保证只有10个ip, 所以100个请求也只会随机从10个里拿, 但是后边处理队列中其他一堆请求就再也不读取新ip了, 怎么解决呢?

读取文本是为了节省ip, 如果在不读取文本,而是直接调取ip接口, 那就需要特别多的ip, 一轮6000个url就需要最少6000个ip, 现在一轮只想用300个ip, 每进行下一组100个url的时候就让它拿新的10个ip , 但貌似现在就不拿...文本里的ip还在定时更换, 结果scrapy就拿一次, 再也不拿了..

0

1个回答

每次随机选择一个IP,不过总是用1个会被反爬的,
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

slice = random.sample(list, 5)

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
怎么让多个进程共用一个socket
有一个so动态连接库,里面有一个客户端socket连接。现在的问题是怎么让不同的程序调用这个so时用的是同一个socket。这个so要怎么编写?
怎么让多个组件共用一个结构体
现在做多个组件,每个组件中都要用一个结构体,但是接口定义时不能用组件外的结构体,所以我就另外定义了一个结构体。rn如果结构体名一样的话,在同时调用多个组件时会出现重复定义的问题,而且还很占用内存。rn有没有什么办法可以让多个组件都共用一个结构体?
scrapy请求队列:
Scrapy 如何获取 request 队列? 最近由于在数据量比较大的抓取遇到了一些问题,就想看看运行时的request队列中的url有什么,可是google的很久也没找到获取request队列的api,我查了这么久得出以下结论:  1.spider运行时的request由schedule控制  2.可以通过self.crawler.engine.schedule这种方式获取到schedule...
Scrapy框架给请求加代理ip
重写start_request方法 我在Scrapy框架的Spider类中重写了start_requests方法: 比较简单,只是在meta中加了一个proxy代理。 使用DOWNLOAD中间件 在middlewares.py中增加一个类,取名:ProxyMiddleware即代理中间件: 这里的初始化方法可以忽略,是我业务上的需求,主要是看这里的process_request方法,加...
多个请求共用一个Servlet(JavaWEB)
                                            多个请求共用一个Servlet     我们在对JavaWEB工程进行开发的时候,我们经常会遇到这样一个问题,在jsp中发送到Servlet的每一个请求都要写一个对应的Servlet,这样会造成一个工程完成下来需要写几十个Servlet,那么怎么可以做到多个请求共用一个Servlet呢?     下面介绍两...
如何让多个Web应用共用一个认证
如题:rnrn比如2个Web应用rnrn应用1:rnhttp://www.webapp1.com/apprnrn应用2:rnhttp://www.webapp2.com/apprnrn没被认证的时候,访问访问其中任何一个应用rnrn都要求被认证(Form认证)。rnrn但只要一次认证后,就可以任意访问两个应用,不再需要认证。rnrn实现上面的功能需要怎么做呢。各位高人Help me!rnrn
scrapy管理多个spider,共用settings问题
背景说明 这段时间需要用到scrapy来获取一些数据,其中涉及到多个任务,之间对scrapy不太熟悉,于是一个任务一个scrapy,感觉对复用方面很不友好,于是我们在想,怎么在一个scrapy project中搞多个spider, 这样对各方面的复用会好很多.系统使用了redis,和kafka,代理逻辑, 还有散落在很多代码里的log 一般这种抽象,我会采用策略模式来做,同时兼顾单例,根据fl...
使用scrapy爬取代理ip
现在的网站基本上都会有防爬虫机制,其中最常用的就是根据ip来ban爬虫,因此当需要有大量的请求时,就需要用到代理请求了。 本次爬取的是的网页是www.xicidaili.com 这个网站中将代理ip进行了分类,比如http的或者是https的 例如http代理的url为http://www.xicidaili.com/wt/ 定义的容器 class GetproxyIte
Scrapy爬虫设置代理ip
在应用爬虫的时候我们经常会遇到ip被封的情况,这样我们想要的数据就不能及时下载下来,那么怎么办呢?当然是使用代理ip了,下面来看看scrapy中怎么使用代理ip。 一、开放代理 import random class IpProxyDownloadMiddleware(object): ''' 定义代理ip的类,这是开放代理的应用 ''' PROXIES = [ ...
Scrapy:测试代理ip
import requests try: requests.get('http://www.baidu.com', proxies={'http': 'http://101.96.11.73:8080'}) except: print('connect failed') else: print('success')
Scrapy 配置动态代理IP
Scrapy 配置动态代理IP 应用 Scrapy框架 ,配置动态IP处理反爬。 # settings 配置中间件 DOWNLOADER_MIDDLEWARES = { 'text.middlewares.TextDownloaderMiddleware': 543, # 'text.middlewares.RandomUserAgentMiddleware': 544, ...
scrapy爬取可用的代理ip
在爬虫之路上,面对反爬虫措施,我们该怎样解决呢,当然,正所谓”你有反爬策略,我也有过墙梯”,所以下面将使用scrapy来爬取免费代理ip,让我们从此不在害怕IP被封了.由于免费代理比较多,这里就以西刺代理为例 相关的代码已经上传到GitHub GitHub地址 : https://github.com/stormdony/scarpydemo,里面有一些scrapy的demo,欢迎fork和s...
多个dbgrid 怎么共用一个adoquery?
rn我是多个dbgrid 共用一个adoqueryrnrnrn但是adoquery变了的话 多个DBGRID的内容也会变 ,这咋解决?rnrnrnrnrnrn
jmeter的测试计划中存在多个线程组,怎么让多个线程组共用一个登录信息
jmeter中测试计划添加一个登录线程组后,再添加其他线程组,使用登录的信息,会提示失效,请问怎么样才能共享这个登录的线程组?添加HTTP Cookie Manager不管用
若有多个消费者,应该使用多个队列还是共用一个队列?
如果要将不同的消息分别发布给多个消费者,应该为这些消费者分别建立一个队列,还是为所有rn消费者只建立一个队列,即所有消费者共用一个队列(使用消息过滤来接受各自的消息)?rn主要考虑这两种方式在性能方面有什么区别.
用scrapy获取代理ip地址
items.py -*- coding: utf-8 -*-# Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.htmlimport scrapy class GetproxyItem(scrapy.Item):
scrapy 设置代理ip和cookies(微博)
pipelines.py代码from fake_useragent import UserAgent import requests class UserAgentMiddlewares(object): """ 自定义一个UserAgent的下载中间件。 """ def __init__(self, user_agent_type): self...
多个视图共用一个模型
最近在写odoo项目的时候遇到一个问题,需要在不同的菜单中展示出状态不同的一个模型的数据,其中一个视图上没有header,另一个视图上需要有: <header> <button type="object" name="btn_cancel&am
多个tableview共用一个控制器
要善于使用传进来的tableview 和自己的进行判断 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {  if (tableView == self.secondListTableV) {//假如二级界面
多个网站共用一个数据库
请问我现在有多个网站想共用一个数据库该怎样做效果会比较好?用的是虚拟主机,同个虚拟主机跟不同个虚拟主机分别要怎样做才能更稳定。
如何让多个程共用 jar
我有三个工程,用到的jar是一样的。rnrn本来我每个工程都用了 user lib引入,在eclipse中用。rn但发布时还要每个工程都要复制到lib下。这样做是不是太浪费空间了?rn我想 发布后,这三个工程可以共用 这些jarrn大家如何做的?
请问在 vb.net中,怎么让程序共用一个 imagelist
请问在 vb.net中,怎么让程序共用一个 imagelist
python中scrapy怎么发送一个post请求
应该用scrapy.http中的Request 还是 FormRequest 我是新手 不太懂这边rnrn我用Request是这样写的rnRequest("http://www.lagou.com/jobs/positionAjax.json?px=new",rn body="first=true&kd=&pn=1"rn meta="first": True, "kd": "", "pn": 1,rn method="POST",rn callback=self.parsern )rn我不知道body是干嘛的 也不知道meta是干嘛的 这样写本身没有问题 rn但是我翻页的时候发现pn是1或者2好像没差别 才知道这样是错误的rnrn用FormRequest我也看了看rnFormRequest(url="http://www.lagou.com/jobs/positionAjax.json?px=new",rn callback=self.parse,rn formdata="first": True, "kd": "", "pn": page_num,rn )rn但是这样会报错rnrn正常应该怎么写 希望大家帮忙解答一些 万分感谢
VB.NET如何让多个事件共用一个事件处理程序????
我想让多个菜单共用一个事件处理程序!可是不知道怎么分辨是哪个菜单产生了单击事件??????rn不知道VB.NET中是样区分这些控件!
请教如何让多个窗体共用一个oledbconnection
在一个Windows窗体上声明了一个oledbconnection,现在想在另一个窗体中也使用它。但是不知道要rn如何去做。是把它的modifer属性设为public就可以了吗?请指点,谢谢
可不可以让多个账户共用一个桌面呢?
我们这边有一台服务器,有多个人员进行管理,希望能够对每个人的权限进行分离。rnrn这个服务器上运行着一些桌面程序,需要查看这些程序的图形化输出结果。rnrn现在遇到一个问题,就是如果我给每个人都建一个账户,他们登录以后的桌面都是独立的,并不能看到那些桌面程序。rnrn有没有办法让这些人分别有不同的账号,但是又能看到那个运行着桌面程序的远程桌面呢?rn前提条件是这些人不能有那个远程桌面对应账号的密码。rnrn
如何让oracle多个表共用一个存储过程?
有两个表tbl1和tbl2,假设它们的触发器大同小异,能不能写一个触发器让两个表共享?比如象下面这样rncreate trigger abc before update on tbl1,tbl2rnbeginrn......rnend;rn然后我需要在触发器内判断一下本次触发的表的表名是tbl1还是tbl2即可。rnrn请教oracle如何实现以上需求?
如何取消一个队列中的请求?
各位不知有没有遇到这种情况:在一个web应用中,用户点了一个功能连接之后,出于某种原因马上又关闭了这个页面。而此时,应用服务器却仍然在处理这个请求。在这个被取消的请求处理完成之前,任何其他功能请求,都会出错。rnThe lock request from EJB:xxxEJB withrnprimary key:16554882722955264 timed-out after waiting 0 ms. The transaction or thread requesting the lock was:Thread[ExecuteThread: '10' for queue: 'default',5,Thread Group for Queue: 'default'].rnrnStart server side stack trace:rnweblogic.ejb20.locks.LockTimedOutException: The lock request from EJB:xxxEJB with primary key:16554882722955264 timed-out after waiting 0 ms. The transaction or thread requesting the lock was:Thread[ExecuteThread: '10' for queue: 'default',5,Thread Group for Queue: 'default'].rnrn这样子让用户很难接受。难道一个请求再没有执行完之前是不可以被取消的吗?在执行完之前其他请求都是被封锁的吗?而且出错方法的事务类型我都设置成NotSupport.再推广开去,如果这个请求是事务的,比如转账,用户点了转账连接之后又不想转了,于是关闭了页面,但后台仍然在处理转账事务,那么这转账到底成功了还是没有成功?成功了的话,岂不是和用户意愿相反?rnrn有没有什么办法?
scrapy中禁止请求重定向
在settings里面设置一下REDIRECT_ENALBED = False
一个severlet怎么处理多个请求
就商品展示和添加购物车两个功能
使用队列控制多个请求访问一个异步方法
之前在项目进入测试阶段的时候,测试部给发了一个bug,大致是在搜索的时候搜索出来的东西和实际的不符合。   于是我去翻代码,原来问题是搜索的时候每次键盘按下都会进行一次搜索,但是搜索时间是异步的,这就导致了上一次搜索还没结束下一次搜索就有开始了。代码的执行就想是一锅粥,乱成一团。搜索的结果自然是不可能准确的了。   事实上,异步代码一旦调用频繁后,要么回调满地图跑,要么这些代码不要求有
共用多个ruby版本
Ruby1.9出来了,有很多改变, 我们需要了解这些改变,而公司的项目又不能使用1.9,那么如何使用多个版本的ruby呢? 先创建一个你存放ruby1.9的目录 mkdir work/ruby19 cd work/ruby19 ruby19>curl [url]http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-3.tar.gz[...
关于一个解决方案中多个项目共用一个webconfig
我目前有一个解决方案,这个解决方案中有多个项目,我目前想把这些项目中共同用到的一些配置信息放在webconfig中,然后写一个类来读取这个webconfig。rnrn目前我在一个空项目中只创建了一个webconfig文件,里面写了配置的信息,现在要如果读取这个webconfig中的信息,网上查了用ConfigurationManager或是WebConfigurationManager.rnrn我是vs2005 .net2.0环境开发的rnrn前者我无法取读取webconfig的节点值!后者网上查了好象是要.net4.5才有的方法rnrn请教一下哪位高手有做过类似的东西!
CURL单线程请求(使用代理IP)
//CURL请求  第一个参数 URL地址  第二个参数 post 提交 //第三个参数 header头  第四个参数 代理IP function http_request($url,$data='',$header='',$proxy='') {     $curl = curl_init();     curl_setopt($curl, CURLOPT_URL, $url);
多个项目共用模块
我们在开发中可能会遇到同时开发几个app的情况,而这几个app在某些地方是相同的,而我们通常的做法是将相同的部分抽成一个library。这在eclipse中是很好实现的,而在Android studio中,我们一般都是抽成module,而一般这些module还是放在项目的根目录下的,要在另一个项目中使用,怎么办呢? 方法一: 将module拷贝到另一个项目的根目录下,在其settings...
多个子窗口共用数据
在一个多文档程序里,同一个类的多个子窗口对象,如何同时读取一个串口的数据或者共用从该串口读取的数据,我想使用这些数据,在多个子窗口上分别做处理
多个scene的共用layer
要每个scene paste一次吗?
怎样在多个Web projects中共用一个Session中的值?
找了一下前面的文章,有一篇介绍这方面方法的文章,就是将两个需要共用同一个Session值的Web projects放在第三个空Web Project的solution中,同时在IIS中将前两个projects的虚拟目录删除,在空project中添加对前两个projects的工程引用。试了一下,总是出错,错误在html中的最上一句<%page Inherits="projectname.类名">,估计是找不到该类型。将Inherits去掉,倒是可以显示页面,但是却不能执行.cs中的代码了,连page_load方法都没有执行,很奇怪,不知各位高手有什么好方法,多谢!
linux系统下scrapy爬虫自动筛选代理IP
爬虫往往要用到多个IP切换。而各代理网站的免费IP大多数都是无效的。一个个手工试是不可能的任务,我们就用爬虫来爬,并设置定时任务自动调度执行。文中的工程采用scrapy来写爬虫,使用scrapy_proxies调度使用获取到的IP(用法详见链接中的说明),定义了crawlall的命令来同时执行所有的爬虫。完整代码:https://github.com/dodolo-cc/proxy
python用scrapy框架爬取代理ip的案例
使用python3.6版本,scrapy框架写的,学习网络爬虫一个很好的入门案例。可以直接运行,如果有小伙伴不会运行scrapy写的程序的可以评论留言,也可以去我的博客里逛逛。