pau*_*aul 3 python scrapy spidermon
我正在关注 Spidermon 关于监控蜘蛛的文档,在他们的示例中,他们创建的监视器似乎运行在所有蜘蛛上,我不知道如何在单个蜘蛛上运行监视器。
我试过将我的 Spider 传递给 test_min_items,但我不知道在哪里设置它。
from spidermon import Monitor, MonitorSuite, monitors
@monitors.name('Item count')
class ItemCountMonitor(Monitor):
@monitors.name('Minimum number of items')
def test_min_items(self):
item_extracted = getattr(
self.data.stats, 'item_scraped_count', 0)
minimum_threshold = 10
msg = 'Extracted less than {} items'.format(
minimum_threshold)
self.assertTrue(
item_extracted > minimum_threshold, msg=msg
)
class SpiderCloseMonitorSuite(MonitorSuite):
monitors = [
ItemCountMonitor
]
Run Code Online (Sandbox Code Playgroud)
有不同的方法来实现这一点。
@monitors.name('Item count')
class ItemCountMonitor(Monitor):
@monitors.name('Minimum number of items')
def test_min_items(self):
if self.data.spider.name == "somespider":
... # Do something
else:
... # Do other thing
Run Code Online (Sandbox Code Playgroud)
# spider1.py
class MySpider1(scrapy.Spider):
name = 'myspider1'
custom_settings = {
'SPIDERMON_SPIDER_CLOSE_MONITORS': (
'myproject.Spider1MonitorSuite',
)
}
# spider2.py
class MySpider2(scrapy.Spider):
name = 'myspider2'
custom_settings = {
'SPIDERMON_SPIDER_CLOSE_MONITORS': (
'myproject.Spider2MonitorSuite',
)
}
Run Code Online (Sandbox Code Playgroud)
对于每个 MonitorSuite,您只包括对 wach spider 有意义的监视器。
SPIDERMON_MIN_ITEMS使用custom_setting前面提到的方法为每个蜘蛛设置不同的设置。