1

我想从自定义扩展修改我的蜘蛛 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 不会返回任何错误。

4

0 回答 0