我正在使用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
如果你只想放弃那些所有值都是None的项目,你应该使用'any'而不是all。
class ConfigSpiderPipeline(object):
def process_item(self, item, spider):
item['task_id'] = task_id
if col is not None:
if not(any(item.values())):
raise DropItem()
else:
col.save(item)
return item
或者更清楚的说:
class ConfigSpiderPipeline(object):
def process_item(self, item, spider):
item['task_id'] = task_id
if col is not None:
if any(item.values()):
col.save(item)
return item
else:
raise DropItem()