日志记录能提升爬虫的可维护性和调试效率,通过logging模块实现多级别信息分类、异常捕获及文件保存,结合模块化配置实现透明化运行。

在Python爬虫开发过程中,日志记录是必不可少的一环。它不仅能帮助我们监控程序运行状态,还能在出错时快速定位问题。合理使用日志,可以大幅提升调试效率和代码可维护性。
为什么需要日志记录
爬虫运行环境复杂,网络请求可能失败、目标网站结构可能变化、反爬机制也可能随时升级。如果只靠print()输出信息,不仅难以管理,也无法区分错误级别或保存历史记录。
日志系统能让我们:
- 记录请求成功或失败的URL
- 捕获异常并保存堆栈信息
- 按不同级别(debug、info、warning、error)分类消息
- 将日志写入文件,便于长期分析
使用logging模块记录爬虫日志
Python内置的logging模块是实现日志功能的最佳选择。下面是一个基础配置示例:
立即学习“Python免费学习笔记(深入)”;
import logging
配置日志格式和输出方式
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('spider.log', encoding='utf-8'),
logging.StreamHandler()
]
)
logger = logging.getLogger(name)
这样配置后,日志会同时输出到控制台和spider.log文件中,包含时间、级别和具体信息。
在爬虫中实际应用日志
以requests发起请求为例,结合异常处理进行日志记录:
import requests
from requests.exceptions import RequestException
def fetch_page(url):
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
logger.info(f"成功获取页面: {url}")
return response.text
except RequestException as e:
logger.error(f"请求失败: {url}, 错误: {e}")
return None
对于频繁请求的场景,还可以加入debug级别日志:
logger.debug(f"正在请求第 {page_num} 页")进阶技巧:分模块记录日志
大型爬虫项目通常包含多个模块(如下载器、解析器、数据存储)。可以为每个模块创建独立的日志记录器:
download_logger = logging.getLogger("spider.downloader")parse_logger = logging.getLogger("spider.parser")
这样可以在日志中清晰看到是哪个环节出了问题。
也可以根据需要动态调整日志级别。例如线上运行时设为WARNING,调试时改为DEBUG。
基本上就这些。用好logging,能让爬虫从“黑盒运行”变成“透明可控”,排查问题不再靠猜。关键是养成习惯:关键步骤打日志,异常必须被捕获并记录。不复杂但容易忽略。










