python - Python管道重复检查器,使用“raise DropItem”,但我们如何让它向下管道?
问题描述
raise DropItem 下面会产生过多的噪音并输出完整的对象
问题:我们怎样才能让它只输出字符串?还是有另一种方法可以将项目放入管道中?
结果现在是一个包含所有值的整个对象,并且输出混乱。希望是静默删除 1 个项目......我们之前使用过 delete() 但这导致后来的管道出现错误。帮助表示赞赏
# Duplicate checker based on https://scrapy2.readthedocs.io/en/latest/topics/item-pipeline.html
if item['sku'] in self.skus_seen:
if "url" not in item or not item['url']:
item['url'] = '???, plz store item url in spider'
raise DropItem(f"Duplicate products {item['sku']} at {item['url']}")
解决方案
一个受欢迎的问题和答案;)
这里给出
实施
从 scrapy import logformatter 导入日志记录
类 PoliteLogFormatter(logformatter.LogFormatter): def drop(self, item, exception, response, spider): return { 'level': logging.INFO, 'msg': logformatter.DROPPEDMSG, 'args': { 'exception': exception , '项目': 项目, } }
推荐阅读
- javascript - 仅显示表中选定的行,其他行将在同一时间使用 Javascript 隐藏
- django - 如何在 django 中由两个不同的用户使用一个视图?
- android - 显示通话记录中所有未保存/未知电话号码的列表
- azure - 无法在 Azure 数据工厂中的我的 github 组织中选择私有存储库
- php - php中的preg_replace删除多次在sting中的标签
- calendar - 如何按特定日期或日期范围加载 tui-calendar
- android - 对齐edittext以匹配全屏父底部
- python - 如何将两个数据框与重叠日期时间范围内的列合并
- firebase - Flutter 中的 FirebaseAuth logout() 不起作用
- react-native - 如何设置不同属性的状态?