【发布时间】:2020-04-27 13:59:46
【问题描述】:
我正在使用 scrapy 从某个网站上刮取数据,但刮取的数据充满了我不想要的空值,因此为了清理我提取的数据,我更改了 pipeline.py 脚本。当我提取一个或两个值时它就起作用了,它就像一个魅力。但是当我提取多个值并且由于每个提取的行上至少有一个空值时,算法最终会删除我几乎所有的数据。有没有办法阻止这种情况发生?
这是我用来删除空数据的代码
class ConfigSpiderPipeline(object):
def process_item(self, item, spider):
item['task_id'] = task_id
if col is not None:
if not(all(item.values())):
raise DropItem()
else:
col.save(item)
return item
【问题讨论】:
-
你能分享一个违背你意愿被丢弃的示例项目吗?
-
例如,我有一个带有 id、标题和标题的文档,如果标题或标题为空,我上面使用的方法最终会删除整个文档,并且由于大多数文档都有它们中的空值我最终会刮掉空结果
-
使用
spider.logging.debug('<message>')来调试正在发生的事情。 DropItem 是在意外情况下引发的吗?col曾经是None吗?
标签: python web-scraping scrapy css-selectors data-processing