登录Scrapy

wribegjk  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(93)

我在登录scrapy时遇到了麻烦,我能找到的大部分都已经过时了。
我已经在settings.py文件中设置了LOG_FILE="log.txt",从文档中可以看出,这应该可以工作:
Scrapy在每个Spider示例中提供了一个日志记录器,可以像这样访问和使用:

import scrapy

class MySpider(scrapy.Spider):

    name = 'myspider'
    start_urls = ['http://scrapinghub.com']

    def parse(self, response):
        self.logger.info('Parse function called on %s', response.url)

但当我这样做:

class MySpider(CrawlSpider):
    #other code
    def parse_page(self,response):
        self.logger.info("foobar")

我什么也得不到。如果我设置

logger = logging.basicConfig(filename="log.txt",level=logging.INFO)

在我的文件的顶部,在我的导入之后,它创建了一个日志文件,默认的输出被很好地记录下来,但是

class MySpider(CrawlSpider):
    #other code
    def parse_page(self,response):
        logger.info("foobar")

我也试着把它放在类__init__中,如下所示:

def __init__(self, *a,**kw):
    super(FanfictionSpider, self).__init__(*a,**kw)
    logging.basicConfig(filename="log.txt",level=logging.INFO)

我再一次没有得到输出到文件,只是到控制台,和foobar没有出现。有人能指导我如何正确登录Scrapy吗?

btxsgosb

btxsgosb1#

对于日志记录,我只是在spider类中添加了以下内容:

import logging
from scrapy.utils.log import configure_logging 

class SomeSpider(scrapy.Spider):
    configure_logging(install_root_handler=False)
    logging.basicConfig(
        filename='log.txt',
        format='%(levelname)s: %(message)s',
        level=logging.INFO
    )

这会将所有零碎的输出作为log.txt文件放入项目根目录
如果你想手动记录一些东西,你不应该使用Scrapy logger,它已经被弃用了。

import logging
logging.error("Some error")
q1qsirdb

q1qsirdb2#

直到我在www.example.com代码的导入部分添加了以下代码,我才能使@Rafael Almeda的解决方案工作spider.py:

from scrapy.utils.log import configure_logging
v1uwarro

v1uwarro3#

看起来你没有在任何时候调用你的parse_page方法。尝试注解你的parse方法,你会收到一个NotImplementedError,因为你正在启动它,你说它'什么都不做'。
如果你实现了parse_page方法,也许它会起作用

def parse(self, response):
    self.logger.info('Russia terrorist state %s', response.url)
    self.parse_page(response)

希望对你有帮助。

相关问题