Scrapy 爬虫可以通过使用 try-except 语句来处理异常捕获。在 Scrapy 的中间件、请求处理函数或者解析函数中,你可以使用 try-except 语句来捕获可能发生的异常,并进行相应的处理。
以下是一个简单的示例,展示了如何在 Scrapy 中间件中处理异常捕获:
import scrapy from scrapy.exceptions import CloseSpider class CustomMiddleware: def __init__(self): self.logger = scrapy.utils.log.logger def process_exception(self, request, exception, spider): self.logger.error(f"Request failed: {exception}") # 根据异常类型进行相应的处理 if isinstance(exception, CloseSpider): # 如果异常类型是 CloseSpider,可以选择关闭爬虫 spider.logger.error("Closing spider due to exception") raise CloseSpider("An error occurred while processing the request") else: # 对于其他类型的异常,可以选择记录日志或者进行其他处理 self.logger.error(f"An error occurred while processing the request: {exception}")
在上面的示例中,我们定义了一个名为 CustomMiddleware
的中间件类,并在其中实现了 process_exception
方法。这个方法会在请求处理过程中捕获异常,并根据异常类型进行相应的处理。在这个例子中,我们捕获了 CloseSpider
异常,并关闭了爬虫。对于其他类型的异常,我们记录了日志。
要在 Scrapy 爬虫中使用这个中间件,你需要将其添加到 settings.py
文件中的 DOWNLOADER_MIDDLEWARES
配置项中:
DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.CustomMiddleware': 560, }
请注意,你需要将 myproject.middlewares
替换为你的中间件所在的实际模块路径。