【问题标题】:TypeError: list indices must be integers or slices, not str JSON ScrapyTypeError:列表索引必须是整数或切片,而不是 str JSON Scrapy
【发布时间】:2020-08-29 17:51:22
【问题描述】:

我正在抓取 JSON 响应,但收到以下错误

values = resp['acf']
TypeError: list indices must be integers or slices, not str

我不知道我哪里做错了。 非常感谢您的回复。

# -*- coding: utf-8 -*-
import scrapy
import json
    
class MainSpider(scrapy.Spider):
    name = 'main'
    start_urls = 'https://chamber.vinylagency.com/wp-json/wp/v2/directory?industry-type=547&per_page=100'

    def parse(self, response):
        resp = json.loads(response.body)
        values = resp['acf']
        
        for value in values:
            name = value['OrgName']

            yield {
                "Name": name,
            }

【问题讨论】:

    标签: json scrapy


    【解决方案1】:

    引发异常是因为响应是一个对象列表,而您正尝试将其作为 dict 直接访问。

    以下是响应示例:

    [
        {
            "id": 33286,
            "date": "2020-05-09T02:38:47",
            "date_gmt": "2020-05-09T02:38:47",
            "guid":
            ...
        },
        {
            "id": 32954,
            "date": "2020-05-09T02:38:22",
            "date_gmt": "2020-05-09T02:38:22",
            "guid":
            ...
        }
    ]
    

    你可能想这样解析:

    def parse(self, response):
        resp = json.loads(response.body)
       
        for value in values:
            name = value['acf']['OrgName']
    
            yield {
                "Name": name,
            }
    

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 2017-11-19
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2021-11-28
      • 1970-01-01
      相关资源
      最近更新 更多