Выскабливание неформатированного json - PullRequest
0 голосов
/ 18 мая 2018

Мой онлайн-файл json имеет вид

data(
      [
        {
           "CCODE": "15ET",
            "CNAME": "JOE",
            "CAGE": 32
        },{
           "CCODE": "15ET",
            "CNAME": "JOE",
            "CAGE": 32
        },{
           "CCODE": "15ET",
            "CNAME": "JOE",
            "CAGE": 32
        }
      ]
    )

Я пытаюсь удалить его с помощью scrapy, но код json.loads(response.body_as_unicode()) дает JSONDecodeError: Expecting value, поскольку формат json неверен.Есть ли обходные пути для этой проблемы.

1 Ответ

0 голосов
/ 19 мая 2018

Вам нужно использовать регулярное выражение, чтобы сначала очистить его от некоторых вещей JS, а затем вы можете использовать json.loads():

json_str = re.search( r'data\((.+)\)$', response.body, flags=re.DOTALL).group(1)
data = json.loads(json_str)

UPDATE Для Python 3 вам нужно что-то вроде этого:

json_str = re.search( r'data\((.+)\)$', response.text, flags=re.DOTALL).group(1)
data = json.loads(json_str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...