python连接信号未被调用
我有以下文件和代码
import logging
from scrapy import signals
from scrapy.exceptions import NotConfigured
logger = logging.getLogger(__name__)
class SpiderOpenCloseLogging:
def __init__(self, item_count):
self.item_count = item_count
self.items_scraped = 0
@classmethod
def from_crawler(cls, crawler):
print('Hey I am called')
# first check if the extension should be enabled and raise
# NotConfigured otherwise
# if not crawler.settings.getbool('MYEXT_ENABLED'):
# raise NotConfigured
# get the number of items from settings
item_count = 1000 #crawler.settings.getint('MYEXT_ITEMCOUNT', 1000)
# instantiate the extension object
ext = cls(crawler.settings,crawler.stats)
# connect the extension object to signals
crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened)
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
crawler.signals.connect(ext.item_scraped, signal=signals.item_scraped)
# return the extension object
return ext
def spider_opened(self, spider):
logger.info("opened spider %s", spider.name)
def spider_closed(self, spider):
logger.info("closed spider %s", spider.name)
def item_scraped(self, item, spider):
self.items_scraped += 1
if self.items_scraped % self.item_count == 0:
logger.info("scraped %d items", self.items_scraped)
,我有更改设置
MYEXT_ENABLED = True
EXTENSIONS = {
'project.custom_extension.SpiderOpenCloseLogging': 300
}
,但没有称呼信号,我检查了在设置中给出的路径,蜘蛛被称为
事件,我打印的打印是我没有记录的,
请有人建议我建议我是什么缺少
感谢
I have below file and code
import logging
from scrapy import signals
from scrapy.exceptions import NotConfigured
logger = logging.getLogger(__name__)
class SpiderOpenCloseLogging:
def __init__(self, item_count):
self.item_count = item_count
self.items_scraped = 0
@classmethod
def from_crawler(cls, crawler):
print('Hey I am called')
# first check if the extension should be enabled and raise
# NotConfigured otherwise
# if not crawler.settings.getbool('MYEXT_ENABLED'):
# raise NotConfigured
# get the number of items from settings
item_count = 1000 #crawler.settings.getint('MYEXT_ITEMCOUNT', 1000)
# instantiate the extension object
ext = cls(crawler.settings,crawler.stats)
# connect the extension object to signals
crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened)
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
crawler.signals.connect(ext.item_scraped, signal=signals.item_scraped)
# return the extension object
return ext
def spider_opened(self, spider):
logger.info("opened spider %s", spider.name)
def spider_closed(self, spider):
logger.info("closed spider %s", spider.name)
def item_scraped(self, item, spider):
self.items_scraped += 1
if self.items_scraped % self.item_count == 0:
logger.info("scraped %d items", self.items_scraped)
and I have change the settings
MYEXT_ENABLED = True
EXTENSIONS = {
'project.custom_extension.SpiderOpenCloseLogging': 300
}
But no signal is being called, I have checked the path being given in settings, spiders are being called
event the print I have given is not being logged
Can someone please suggest what I am missing
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所有信号都从我对脚本的改编中调用。您犯了一些错误,对我来说,这没有任何意义,因为您没有指定任何具体的内容。这就是为什么您没有得到信号而是错误的原因:
一些错误:
1。
我。
通过更新,我们有以下更正:
II。
iii。
示例完全放置此:
输出:
All the signals are called from my adaption to your script. There were a few mistakes that you made, which to me did not make any sense as you were not specifying anything specific. Which is why you was getting no signal but rather errors:
A few mistakes:
1.
i.
By updating, we have the following corrections:
ii.
iii.
Example when putting this altogether:
Output: