在编写爬虫时,设置日志文件是一种良好的实践,可以帮助你记录程序执行过程中的关键信息、错误和异常,以便后续调试和分析。下面是一个更详细的示例,展示如何在 Python 中使用 logging
模块来配置日志记录
import logging
# 配置日志记录器
logging.basicConfig(filename='spider.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 示例爬虫函数
def my_spider(url):
try:
# 模拟爬取网页的过程
# 这里可以是你实际的爬取网页的代码
logging.info(f'Successfully crawled {url}')
# 假设在爬取过程中出现了一些警告信息
# logging.warning('Some warning message')
# 假设在爬取过程中出现了一些调试信息
# logging.debug('Some debug message')
except Exception as e:
# 捕获并记录异常信息
logging.error(f'Error while crawling {url}: {e}', exc_info=True)
# 调用爬虫函数
my_spider('http://example.com')
我们使用 logging.basicConfig()
函数配置了日志记录器。参数 filename='spider.log'
指定了日志文件的名称为 spider.log
,日志级别 level=logging.INFO
设置为 INFO,这意味着只有 INFO 级别及以上的日志信息会被记录。参数 format='%(asctime)s - %(levelname)s - %(message)s'
指定了日志的格式,包括时间、日志级别和消息内容。
在爬虫函数 my_spider()
中,我们使用了 logging.info()
来记录一般信息的日志,例如成功爬取了哪个网址。你还可以使用 logging.warning()
记录警告信息,以及 logging.debug()
记录调试信息。
在异常处理部分,我们使用 logging.error()
来捕获并记录异常信息。exc_info=True
参数会记录异常的堆栈信息,方便后续调试。
通过设置日志文件,你可以在程序执行过程中不间断地记录关键信息和异常情况,以便后续分析和改进你的爬虫程序。
在scrapy的setting中可以设置日志
# 创建日志文件夹
log_folder = 'logs'
if not os.path.exists(log_folder):
os.makedirs(log_folder)
# 设置日志记录
log_file = os.path.join(log_folder, 'app.log')
file_handler = TimedRotatingFileHandler(log_file, when='W0', backupCount=1)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] %(message)s'))
logger = logging.getLogger(__name__)
logger.addHandler(file_handler)