数据质量保证:数据验证、异常处理

📂 所属阶段:第四阶段 — 实战演练(项目开发篇)


1. 数据验证

from scrapy.exceptions import DropItem

class ValidationPipeline:
    def process_item(self, item, spider):
        # 必填字段检查
        required_fields = ['title', 'price', 'url']
        for field in required_fields:
            if not item.get(field):
                raise DropItem(f"Missing {field}")
        
        # 数据类型检查
        try:
            item['price'] = float(item['price'])
        except ValueError:
            raise DropItem("Invalid price")
        
        return item

2. 异常处理

class ErrorHandlingMiddleware:
    def process_exception(self, request, exception, spider):
        # 记录错误
        spider.logger.error(f"Error: {exception}")
        
        # 重试
        if isinstance(exception, TimeoutError):
            return request
        
        # 放弃
        return None

3. 小结

质量保证三步:

1. 验证:检查数据有效性
2. 异常处理:捕获错误
3. 日志记录:便于调试

好处:
- 减少脏数据
- 提升稳定性
- 便于维护

💡 记住:数据质量决定分析质量。投入时间做好验证和异常处理,后续工作会轻松 10 倍。


🔗 扩展阅读