使用scrapy删除空数据

问题描述 投票:0回答:1

我正在使用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

python web-scraping scrapy css-selectors data-processing
1个回答
0
投票

如果你只想放弃那些所有值都是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()

© www.soinside.com 2019 - 2024. All rights reserved.