В Scrapy extract_first () не возвращает полный текст, если длина строки очень велика - PullRequest
0 голосов
/ 27 февраля 2019

Я очищаю сайт, используя Scrapy, который возвращает файл типа json в строковом формате.

Когда я использую селектор ниже, я получаю полные данные, как и ожидалось, внутри списка.

response.xpath('//p/text()').extract()

Данные в этом списке представляют собой строки в формате json, которые мне нужно преобразовать в словарь, для которого я использую json.loads()

Но проблема возникает при использовании приведенного нижеселектор для получения json-подобной строки, присутствующей в списке.

response.xpath('//p/text()').extract_first()

Это дает частично усеченную строку как и вывод, и, следовательно, json.loads() дает и ошибку неопределенной строки.

Примечание: Iпробовал похожие селекторы типа .extract()[0], getall()[0] и т. д. все сталкиваются с той же проблемой.Также при печати печатается усеченная частичная строка.

1 Ответ

0 голосов
/ 27 февраля 2019

Использование такого экстрактора XPath может испортить данные.Поскольку URL возвращает JSON, вы можете просто загрузить весь этот ответ в объект JSON:

import json
json_data = json.loads(response.text)

# Items are available in json_data['Table']

Вот что браузер видит внутри: JSON Fields

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...