scrapy中间件统计爬虫信息
以下是一个简单的Scrapy中间件示例,用于统计爬虫信息:
class StatsMiddleware:
def __init__(self):
self.stats = {
'items_scraped': 0,
'items_dropped': 0,
'requests_sent': 0,
'requests_received': 0,
}
@classmethod
def from_crawler(cls, crawler):
# 当Scrapy启动时,这个方法会被调用来创建中间件实例
# 我们可以从crawler中获取配置信息
return cls()
def process_item(self, item, spider):
# 每处理一个item时调用
self.stats['items_scraped'] += 1
return item
def process_dropped_item(self, item, reason, spider):
# 当item被丢弃时调用
self.stats['items_dropped'] += 1
def process_request(self, request, spider):
# 每发送一个request时调用
self.stats['requests_sent'] += 1
return None
def process_response(self, request, response, spider):
# 每接收一个response时调用
self.stats['requests_received'] += 1
return response
def open_spider(self, spider):
# 爬虫开始运行时调用
pass
def close_spider(self, spider):
# 爬虫关闭时调用
print("爬虫统计信息:")
for key, value in self.stats.items():
print(f"{key}: {value}")
要使用这个中间件,你需要将其添加到middlewares.py
文件中,并在settings.py
中启用它。例如:
# 在middlewares.py中
custom_middlewares.StatsMiddleware
# 在settings.py中
DOWNLOADER_MIDDLEWARES = {
'custom_middlewares.StatsMiddleware': 543,
}
这个中间件会在爬虫的不同阶段记录统计数据,并在爬虫关闭时打印出来。这只是一个简单的示例,实际的爬虫统计中间件可能需要更复杂的逻辑,例如并发请求的处理、分布式爬虫环境中的统计同步等。
评论已关闭