Scrapy。在解析结果中创建复杂结构(dict中的dict)

while1pass

我有一些描述对象属性的Item对象

import scrapy


class FullName(scrapy.Item):
    first = scrapy.Field()
    second = scrapy.Field()
    middle = scrapy.Field()

class Physical(scrapy.Item):
    growth = scrapy.Field()
    weight = scrapy.Field()
    hair = scrapy.Field()

我有这个项目,它属于主题。作为字段,我想插入对象的Item属性

class Human(scrapy.Item):
    sex = scrapy.Field()
    age = scrapy.Field()
    physical = <...Physical Item>
    full_name = <...FullName Item>

因此,当您将数据导出到具有指定嵌套的结构时

{
age: 23,
sex: male,
full_name: {first: test, second: test, middle: test}
physical: {growth: 90, height: 190, hair: blonde},
...
}

嵌套可以达到任何深度。

猫我用Scrapy做吗?蜘蛛的结构是什么?在有关扩展项и加载程序的草率文档中,我找不到。

还是我选择了错误的工具而需要手动进行?


UPD。关于蜘蛛。

蜘蛛的结构是什么?如您所知,“物理”字段需要与通过当前URL的蜘蛛PhysicalSpider关联。怎么了 请修理我。

class PhysicalSpider(scrapy.Spider):
    name = "physical"

    def parse(self, response):
         item = PhysicalItem()
         item['weight'] = response.xpath('path').extract()
         yield item

class HumanSpider(scrapy.Spider):
    name = "human"
    start_urls = [
        "url1",
        "url2",
     ]

    def parse(self, response):
         item = HumanItem()
         item['sex'] = response.xpath('path').extract()
         item['age'] = response.xpath('path')[1].extract()
         item['physical'] = PhysicalSpider(???)
         yield item
霸王龙
class Human(scrapy.Item):
    sex = scrapy.Field()
    physical = scrapy.Field()
    full_name = scrapy.Field()

class Physical(scrapy.Item):
    height = scrapy.Field() 

p = Physical()
p['height'] = 180
h = Human()
h['physical'] = p
h['sex'] = 'yes'
return h

结果:

{'physical': {'height': 180}, 'sex': 'yes'}

根据您的蜘蛛示例:

class HumanSpider(scrapy.Spider):
    name = "human"
    start_urls = [
        "url1",
     ]

    def parse(self, response):
         item = HumanItem()
         item['sex'] = response.xpath('path').extract()
         item['age'] = response.xpath('path')[1].extract()
         physical_item = Physicalitem()
         physical_item['height'] = response.xpath('path').extract()
         item['physical'] = physical_item
         yield item

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python在dict中解析值

来自分类Dev

从python列表中删除dict结构

来自分类Dev

解析dict中的嵌套键(从json生成)

来自分类Dev

如何在python中从数组创建Dict?

来自分类Dev

如何在Python中以类似dict的结构求和耦合值?

来自分类Dev

遍历python中的dict无法产生预期的结果

来自分类Dev

自动查询 Facebook 页面并将结果存储在 dict 中

来自分类Dev

从R中的数据框创建复杂的列表结构

来自分类Dev

如何使用CQL3在Cassandra中创建复杂的结构

来自分类Dev

在Golang中为复杂的JSON数组创建结构

来自分类Dev

从R中的数据框创建复杂的列表结构

来自分类Dev

如何在 PHP 中创建复杂的数组结构

来自分类Dev

解析dict(用户名)中的多个常用值

来自分类Dev

从 json 输出中未正确解析的 dict 中提取值

来自分类Dev

模板中的Django dict

来自分类Dev

KeyError:dict中的nan

来自分类Dev

Python中的Union dict

来自分类Dev

模板中的Django dict

来自分类Dev

dict中“ in”的异常行为

来自分类Dev

在dict值python中访问dict

来自分类Dev

如何使用dict理解和三元运算符在Python中创建新的dict

来自分类Dev

在 Scrapy 中抓取复杂的评论

来自分类Dev

用重复的键从字符串中创建dict / json

来自分类Dev

在Python中创建空集:TypeError:“ dict”对象不可调用

来自分类Dev

使用 Dict 和 List 在 Python 中创建邻接列表

来自分类Dev

openCL内核中的复杂结构

来自分类Dev

Python中dict.keys()的时间复杂度是多少?

来自分类Dev

Python-列表中的Dict嵌套在Dict中

来自分类Dev

python中的OrderedDict vs Dict