【问题标题】:Scrapy: extrat items within JSON responseScrapy:在 JSON 响应中提取项目
【发布时间】:2016-11-22 23:35:00
【问题描述】:

我正在尝试从 JSON 响应中提取单个对象。以下是我从我试图抓取的网站得到的回复:

[{"name":"AAA 404","id":"AAA404","sections":[{"id":"5393643","name":"40053","instructor":"Dellabough"}]},{"name":"AAA 604","id":"AAA604","sections":[{"id":"5393644","name":"40054","instructor":"STAFF"},{"id":"5393645","name":"40055","instructor":"Dellabough"}]}]

使用以下代码(和蜘蛛),我能够获取“名称”、“id”和“部分”。

    def parse(self, response):
    jsonresponse = json.loads(response.body_as_unicode())

    for i in jsonresponse:
        print i["id"], i["name"], i["sections"]

这给了我以下信息:

ID =  AAA404 NAME =  AAA 404 SECTION =  [{u'instructor': u'Dellabough', u'id': u'5393643', u'name': u'40053'}]
ID =  AAA604 NAME =  AAA 604 SECTION =  [{u'instructor': u'STAFF', u'id': u'5393644', u'name': u'40054'}, {u'instructor': u'Dellabough', u'id': u'5393645', u'name': u'40055'}]

现在,我想做的是拉出这些部分中的“instructor”、“id”和“name”。最终,我需要将这些信息与整体 ID 和部分联系起来,但现在我最关心的是能够以可用的格式提取这些信息,就像我对整体 ID、名称、部分所做的那样。

【问题讨论】:

    标签: python json scrapy


    【解决方案1】:

    只需使用内部循环遍历 sections dicts,每个 i 的 id 和 name 将与每个相关联:

    for dct in i["sections"]:
         print(i["id"], i["name"], dct["instructor"], dct["id"], dct["name"])
    

    【讨论】: