如何在不使用 bash 中的脚本的情况下在报废后将 Scrapy 日志保存在 gzip 中?

How can i save Scrapy logs in gzip after scrapping without using scripts in bash?

有什么压缩日志的方法吗?我需要将它们存储一段时间以供以后调试,找到一种减小它们大小的方法会很酷。如果没有这样的方法,那么如何更有效地组织压缩过程?

你可以在蜘蛛运行完成后压缩日志,方法是在蜘蛛closed方法中编写压缩代码。请参阅下面的示例,其中我压缩了日志文件,然后在压缩后删除了初始日志文件。您可以通过添加一些错误处理来改进代码。

import scrapy
import gzip
import os

class TestSpider(scrapy.Spider):
    name = 'test'
    allowed_domains = ['toscrape.com']
    start_urls = ['https://books.toscrape.com']

    custom_settings = {
        'LOG_FILE': 'scrapy.log'
    }

    def parse(self, response):
        yield {
            'url': response.url
        }

    def closed(self, reason):
        with open('scrapy.log', 'rb') as f_in, gzip.open('scrapy.log.gz', 'wb') as f_out:
            f_out.writelines(f_in)
        os.remove('scrapy.log')