Не могу разобрать ответ от sg.media-imdb ​​в python - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь разобрать ответ от https://sg.media -imdb.com / предлагает / a / a.json в Python 3.6.8.

Вот мой код:

import requests

url = 'https://sg.media-imdb.com/suggests/a/a.json'
data = requests.get(url).json()

Я получаю эту ошибку:

$ /usr/bin/python3 /home/livw/Python/test_scrapy/phase_1.py
Traceback (most recent call last):
  File "/home/livw/Python/test_scrapy/phase_1.py", line 33, in <module>
    data = requests.get(url).json()
  File "/home/livw/.local/lib/python3.6/site-packages/requests/models.py", line 889, in json
    self.content.decode(encoding), **kwargs
  File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Похоже, что формат ответа не в формате JSON, хотя я могу проанализировать ответ в JSON Formatter & Validator

Как это исправить и сохранить ответ в объекте json?

1 Ответ

1 голос
/ 14 октября 2019

Это, вероятно, произошло потому, что это не полный json, у него есть префикс

, вы можете видеть, что ответ начинается с imdb$a( и заканчивается ) анализом json не знает, как с ним справитьсяи он терпит неудачу, вы можете удалить эти значения и просто проанализировать сам JSON

вы можете сделать это:

import json
import requests

url = 'https://sg.media-imdb.com/suggests/a/a.json'
data = requests.get(url).text
json.loads(data[data.index('{'):-1])
...