Подтвердить что ты не робот

Скремблирование ответа JSON с помощью Scrapy

Как вы используете Scrapy для очистки веб-запросов, возвращающих JSON? Например, JSON будет выглядеть так:

{
    "firstName": "John",
    "lastName": "Smith",
    "age": 25,
    "address": {
        "streetAddress": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": "10021"
    },
    "phoneNumber": [
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "fax",
            "number": "646 555-4567"
        }
    ]
}

Я бы хотел очистить определенные элементы (например, name и fax в приведенном выше) и сохранить в csv.

4b9b3361

Ответ 1

Это то же самое, что и использование Scrapy HtmlXPathSelector для html-ответов. Единственное различие заключается в том, что вы должны использовать модуль json для анализа ответа:

class MySpider(BaseSpider):
    ...


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

         item = MyItem()
         item["firstName"] = jsonresponse["firstName"]             

         return item

Надеюсь, что это поможет.

Ответ 2

Возможная причина, по которой JSON не загружается, заключается в том, что она имеет одинарные кавычки до и после. Попробуйте следующее:

json.loads(response.body_as_unicode().replace("'", '"'))