scrapy 如何从有碎屑的物品中获得dict?

cpjpxq1n  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(184)

我需要一个dict中的值。但是item在它上面使用了一些抽象。如何从item中获取dict中的字段?
我现在知道scrapy allows dict to be returned in place of item了。但是我已经在我的代码中使用了item,那么如何转换它呢?

xxslljrj

xxslljrj1#

在我看来,

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']

tmb3ates

tmb3ates2#

accepted answer很好用,但是当你有嵌套的项目时,它就不起作用了。在这种情况下,你可能需要先将项目转换为string,然后再转换为json,如下所示:

class CustomEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, scrapy.Item):
            return dict(o)

字符串

相关问题