我想从自定义扩展修改我的蜘蛛 start_requests 方法。主要目标是当我从自定义 api 获得响应时将 url 发送给蜘蛛。但是我交给蜘蛛的方法没有运行。也许它不是一个好习惯。
我还阅读了关于爬虫引擎的scrapy文档,也许从扩展中管理蜘蛛会更好,比如spider.parse(Request(url)). 但我没有看到任何尝试达到我的目标或类似目标的使用示例。
这是代码示例:
class GetUrl(object):
@classmethod
def from_crawler(cls, crawler):
ext = cls()
# 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.spider_idle, signal=signals.spider_idle)
# return the extension object
return ext
def spider_opened(self, spider):
print(spider.name)
spider.start_requests = self.start
def spider_idle(self, spider):
raise DontCloseSpider
def spider_closed(self, spider):
logger.info("closed spider %s", spider.name)
def start():
yield scrapy.Request('https://example.com', dont_filter=True)
PS Scrapy 不会返回任何错误。