python绿色版spider的idle_Python-Scrapy Spider没有收到spider_idle信号
我有蜘蛛使用meta处理链中的请求,以产生具有来自多个请求的数据的项目.
我用来生成请求的方式是在首次调用parse函数时启动所有请求,但是,如果我有太多链接无法请求,则并不是所有请求都已计划好,最终我也无法获得所需的一切.
为了解决这个问题,我正在尝试使Spider一次请求5个产品,然后在Spider空闲时再次请求(通过在from_crawler中连接信号).
问题是,由于我的代码现在正确,spider_idle没有运行请求函数,并且蜘蛛立即关闭.好像蜘蛛不会闲置.
这是一些代码:
class ProductSpider(scrapy.Spider):
def __init__(self, *args, **kwargs):
super(ProductSpider, self).__init__(*args, **kwargs)
self.parsed_data = []
self.header = {}
f = open('file.csv', 'r')
f_data = [[x.strip()] for x in f]
count=1
first = 'smth'
for product in f_data:
if first != '':
header = product[0].split(';')
for each in range(len(header[1:])):
self.header[header[each+1]] = each+1
first = ''
else:
product = product[0].split(';')
product.append(count)
count+=1
self.parsed_data.append(product)
f.close()
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = super(ProductSpider, cls).from_crawler(crawler, *args, **kwargs)
crawler.signals.connect(spider.request, signal=signals.spider_idle)
return spider
name = 'products'
allowed_domains = [domains]
handle_httpstatus_list = [400, 404, 403, 503, 504]
start_urls = [start]
def next_link(self,response):
product = response.meta['product']
there_is_next = False
for each in range(response.meta['each']+1, len(product)-1):
if product[each] != '':
there_is_next = True
yield scrapy.Request(product[each], callback=response.meta['func_dict'][each], meta={'func_dict': response.meta['func_dict'],'product':product,'each':each,'price_dict':response.meta['price_dict'], 'item':response.meta['item']}, dont_filter=True)
break
if not there_is_next:
item = response.meta['item']
item['prices'] = response.meta['price_dict']
yield item
#[...] chain parsing functions for each request
def get_products(self):
products = []
data = self.parsed_data
for each in range(5):
if data:
products.append(data.pop())
return products
def request(self):
item = Header()
item['first'] = True
item['sellers'] = self.header
yield item
func_dict = {parsing_functions_for_every_site}
products = self.get_products()
if not products:
return
for product in products:
item = Product()
price_dict = {1:product[1]}
item['name'] = product[0]
item['order'] = product[-1]
for each in range(2, len(product)-1):
if product[each] != '':
#print each, func_dict, product[each]
yield scrapy.Request(product[each], callback=func_dict[each],
meta={'func_dict': func_dict,'product':product,
'each':each,'price_dict':price_dict, 'item':item})
break
raise DontCloseSpider
def parse(self, response=None):
pass
python绿色版spider的idle_Python-Scrapy Spider没有收到spider_idle信号相关推荐
- 七月算法课程《python爬虫》第五课: scrapy spider的几种爬取方式
本节课介绍了scrapy的爬虫框架,重点说了scrapy组件spider. spider的几种爬取方式: 1.爬取1页内容 2.按照给定列表拼出链接爬取多页 3.找到'下一页'标签进行爬取 4.进入链 ...
- python绿色版使用_嵌入式Python : 如何在U盘安装绿色版 Python
一直以来都习惯将各种日常工具和开发环境变为绿色版. portable,一个U盘就能将日常所用到的开发环境和必备资料随身携带,从公司到家里,再也不用背上重重的笔记本,通勤路上也能轻轻松松的听听音乐,看看 ...
- python绿色版_mPython最新下载_mPython绿色版 - 软件帝
mPython官方版是款针对程序员们所打造的图形编程工具.mPython电脑版支持命令式程序设置,并具有强大的编程库,用户可将其与多种模块完美相结合在一起.mPython还可以支持函数,仿真.hex. ...
- python绿色版运行程序_Python打包exe运行程序,分享你的技术成果!
本文转载于公众号:你想要
- python学习笔记之爬虫框架scrapy(十七)
一.安装 执行以下命令安装scrapy pip install scrapy 注意: Scrapy是用纯Python编写的,并且依赖于一些关键的Python包(以及其他一些包): lxml,高效的XM ...
- scrapy.Spider的属性和方法
scrapy.Spider的属性和方法 属性: name:spider的名称,要求唯一 allowed_domains:允许的域名,限制爬虫的范围 start_urls:初始urls custom_s ...
- 安装Python(绿色版)
前言:在Win10系统中安装Python环境,使用安装包有些麻烦,使用嵌入版则仅需解压并配置环境变量即可,省时省力,十分方便.同时还安装包管理器pip. 下载嵌入版 官网下载:Python嵌入版 解压 ...
- python 实时数据推送_python scrapy 爬取金十数据并自动推送到微信
一.背景 因业务需要获取风险经济事件并采取应对措施,但因为种种原因又疏忽于每天去查看财经日历,于是通过爬取金十数据网站并自动推送到微信查看. 二.目标实现 image 三.环境与工具 1.pychar ...
- Python爬虫——零基础实现基于scrapy框架的项目
1. 生成器 yield作用 : 把一个函数当做一个生成器使用 斐波那契数列: def fib(n):a, b, s = 0, 1, 0while s<n:a, b = b, a+bs += 1 ...
最新文章
- 修改 Docker 的默认存储路径
- Kali Linux 2017.1脚本gerix.py修复
- 任务计划cron、服务管理工具chkconfig/systemctl
- sourceTree安装与使用
- 人工智能改变生活的 10 种方式
- 【DevOps进行时】C/S端界面自动化测试:微软UIAutomation实践
- SpringBoot返回json和xml
- 做虚拟化服务器的配资一致嘛,服务器虚拟化技术在校园网管理中的应用探讨.pdf...
- 如何查看 Linux是32位还是64位?
- 我点击一个单选框时另外一个单选框里的内容属性隐藏掉_一个交通工程专业硕士研究生的总结与独白(二):交通生成预测及TransCAD操作...
- 巴基斯坦国立计算机与新科大学,新加坡四所大学和新科院学费全面上调
- Linux ct获取本机ip,[原]archlinux 下最新的netct工具配置ip地址
- HP LaserJet Pro MFP M126nw打印机在Win11操作系统中无法打印问题的解决方案
- CentOS7.6Arm Qt开发环境(GCC+Qt5+QtCreator+JDK8+MySQL8+CMake+ProtoBuf+Python+SVN)
- 家庭整理-《家庭断舍离》书中的精髓:如何通过家庭断舍离,来消除家居环境和家庭关系间的堆积物,从而拥有自由舒适的家庭关系。
- 黎明回港避谈婚事 被曝宴请好友庆祝新婚(附图)
- 蓄热式加热炉燃烧技术
- python 同时输出国际和国内BMI值
- iphone SE 自带视频播放器要求的视频格式转换参数
- 广义拉格朗日函数的理解