Scrapy框架的学习(4.scrapy中的logging模块记录日志文件以及普通的项目中使用)

 logging模块使用

    为了让我们自己希望输出到终端的内容能容易看一些:

            我们可以在setting中设置log级别

           setting中添加一行(全部大写):LOG_LEVEL = "WARNING”

            默认终端显示的是debug级别的log信息

1. 使用  WARNING  打印出信息

import logging  # 导入模块

'''可以把当前的py文件所在的位置显示出来'''
logger = logging.getLogger(__name__)


'''使用logger打印出信息'''
logger.warning()

创建 名为scrapyTest的爬虫,域名为: quotes.toscrape.com      scrapy genspider scrapyTest quotes.toscrape.com

   在scrapyTest,py里面加上log信息,打印循环次数

# -*- coding: utf-8 -*-
import scrapy
import logging

'''可以把当前的py文件所在的位置显示出来'''
logger = logging.getLogger(__name__)


class ScrapytestSpider(scrapy.Spider):
    name = 'scrapyTest'
    allowed_domains = ['quotes.toscrape.com']
    start_urls = ['http://quotes.toscrape.com/']

    def parse(self, response):
        for i in range(1, 11):
            item = {"循环次数": str(i)}
            logger.warning(item)
            yield item

   还可以在pipelines.py加上log信息,要加的话就要到settings.py里面开启pipeline:

'''开启pipeline,只需到settings.py里面把下面的注释去掉就行'''
ITEM_PIPELINES = {
   'PipelineTest.pipelines.PipelinetestPipeline': 300,
}

pipelines.py

import logging

logger = logging.getLogger(__name__)

class PipelinetestPipeline(object):
    def process_item(self, item, spider):
        logging.warning("*-*pipeline的warning信息*-*")
        return item

然后运行,查看结果  scrapy crawl scrapyTest

扫描二维码关注公众号,回复: 4903182 查看本文章

打印的结果  里面包括   日期、时间、还有当前py文件的路径和名称,以及设置的打印信息

2. 把log的信息保存到本地

   在settings.py里面添加上

LOG_FILE = "./log.log"

然后运行程序,没有打印信息,但是log的信息全部保存到了当前爬虫项目下的log.log,打开文件会发现和打印的信息是一样的

3. logging也可以用在普通的项目中使用
     import logging
     logging.basicConfig(...) #设置日志输出的样式,格式
     实例化一个`logger=logging.getLogger(__name__)`
     在任何py文件中调用logger即可

猜你喜欢

转载自blog.csdn.net/wei18791957243/article/details/86233959
今日推荐