如何从scrapy项目中获取字典?

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

我需要字典中的值。但 item 在其之上使用了一些抽象。如何从项目中获取字典中的字段?

我知道scrapy现在允许返回dict来代替item。但我已经在我的代码中使用了 item,那么如何转换它。

python dictionary scrapy
2个回答
8
投票

在我看来像:

class Product(scrapy.Item):
    name = scrapy.Field()


i = Product(name='foo)
print dict(i)

给你一本字典 {'name': 'foo'}

vars(p)
p.__dict__

让你: {'_values': {'name': 'foo'}}

如果您不想创建新字典,只需从上面获取 _values 键:

vars(p)['_values']
p.__dict__['_values']

0
投票

接受的答案效果很好,但当您有嵌套项目时它就不起作用。在这种情况下,您可能需要首先将项目转换为字符串,然后转换为 json,如下所示:

class CustomEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, scrapy.Item):
            return dict(o)
© www.soinside.com 2019 - 2024. All rights reserved.