Python 爬行时爬行爬行器的输出

Python 爬行时爬行爬行器的输出,python,scrapy,Python,Scrapy,我正在努力学习Scrapy框架,我能写一个蜘蛛,在网上爬行等等。我也能够保存所需的数据,但不是以我希望的方式保存 示例代码: import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor class ExampleSpider(CrawlSpider): name = 'examplecr

我正在努力学习Scrapy框架,我能写一个蜘蛛,在网上爬行等等。我也能够保存所需的数据,但不是以我希望的方式保存

示例代码:

    import scrapy
    from scrapy.spiders import CrawlSpider, Rule
    from scrapy.linkextractors import LinkExtractor
    
    class ExampleSpider(CrawlSpider):
        name = 'examplecrawler'
        allowed_domains = ['example.com']
        start_urls = ['https://www.example/']
        rules = [
            Rule(LinkExtractor(unique=True), follow=True, callback="parse")
        ]
    
        def parse(self, response):
            url = response.url
            yield {'link': url}
当前结果:Spider递归运行,当我使用Control+C停止输出时,它将仅使用项目导出器写入输出

所需结果:Spider递归运行并在运行时写入输出,而不必停止它来写入输出


我已经阅读了文档,并了解了在哪里可以使用诸如编写自定义管道之类的东西来编写数据,但我想知道在当前的项目导出器中是否可以这样做。i、 e.:csv和json。

为了修改当前爬虫的工作方式,使其打印出实时状态,您必须
修改基类的现有代码或自己创建爬虫
。由于您要导入一个现有模块,因此您实在无法更改其工作方式,因此您最好(如果不是唯一的)选择是创建您自己的具有自定义输出的爬虫程序。

您是否将输出写入外部存储系统(例如S3、FTP、Google存储)?否则,它应该按预期工作。请看,我正在使用scrapy、csv和json提供的提要导出器。我没有输出到外部存储器。我想在本地写,但不想延迟输出。i、 e:如果我使用scrapy runspider examplespider.py-o output.json运行爬行器,它只会在我使用Control+C退出爬行器或爬行器没有更多的URL后写入output.json。CSV输出应该按照您的需要工作;JSON是不同的,因为它旨在保持输出文件的JSON有效,这意味着它必须一次写入整个文件。请考虑使用JSON行,或者子类的出口商可以按您的需要工作。我已经尝试了JSON行和CSV,但结果与JSON相同。唯一似乎有效的方法是在设置中设置FEED\u EXPORT\u BATCH\u ITEM\u COUNT,但我不想要多个文件。我将尝试sqlite3管道。