Logging模块的使用

其实我们在编写scrapy爬虫的时候,可以在settings文件中,添加log配置:

LOG_LEVEL="WARNING"#当前这个爬虫只会输出warning的日志,也就是不会显示info,debug等的其它日志信息
 

那么我们修改一下e1yu爬虫的代码,然后scrapy crawl e1yu:

import scrapy
import logging

class E1yuSpider(scrapy.Spider):
    name = 'e1yu'
    allowed_domains = ['http://e1yu.com/']
    start_urls = ['http://e1yu.com/']

    def parse(self, response):
        item={}
        item['come_from']='e1yu'
        for i in range(10):
            logging.warning(item)

 
2020-03-07 21:27:09 [root] WARNING: {'come_from': 'e1yu'}
 

那么日志的默认格式就是上面代码中的样子,有没有发现输出的结果跟我们平常启动爬虫不一样了。但是这个日志输出的格式不太是我们想要的结果,我们在爬虫e1yu中添加的日志显示的却是root,那么在别的文件中使用日志,同样也会是root,我们可以修改一下日志的输出样式:

import scrapy
import logging
logger=logging.getLogger(__name__)#

class E1yuSpider(scrapy.Spider):
    name = 'e1yu'
    allowed_domains = ['e1yu.com']
    start_urls = ['http://e1yu.com/']

    def parse(self, response):
        item={}
        item['come_from']='e1yu'
        for i in range(10):
            logger.warning(item)

 

再次运行代码就可以看到日志的格式变成了:

2020-03-07 21:34:12 [myspider.spiders.e1yu] WARNING: {'come_from': 'e1yu'}
2020-03-07 21:34:12 [myspider.spiders.e1yu] WARNING: {'come_from': 'e1yu'}

 

这样的话我们就能准确的看到日志输出的位置,我们可以在pipelines中加入日志:

import logging
logger=logging.getLogger(__name__)

class MyspiderPipeline(object):
    def process_item(self, item, spider):
        if spider.name=='e1yu':
            logger.warning('--'*20)

        return item


 

修改完成之后需要做的就是在settings文件中开启管道,然后爬虫文件需要yield item,这样pipelines才会接受的值。最后日志的输出结果:

2020-03-07 21:38:43 [myspider.spiders.e1yu] WARNING: {'come_from': 'e1yu'}
2020-03-07 21:38:43 [myspider.pipelines] WARNING: ----------------------------------------
2020-03-07 21:38:43 [myspider.spiders.e1yu] WARNING: {'come_from': 'e1yu'}
2020-03-07 21:38:43 [myspider.pipelines] WARNING: ----------------------------------------

 

那么我们还可以把日志信息保存到本地,方便我们查看,具体的做法就是在settings文件中再添加一个配置信息:

LOG_FILE="./log.log"#日志保存到当前路径下的log.log文件
 

添加之后再次运行爬虫文件,那么就会在本地的当前目录下看到log.log文件。这里我pycharm需要安装log插件,直接安装就可以。在普通的代码文件也可以使用log模块添加日志。更多关于logging日志模块的使用可参考:Logging库的使用详解

发表评论

后才能评论