@vhsporno

Как спарсить json с переходом на новую строку через requests?

Парсю api через json contents = requests.get(url, verify=False).json()
вот таким образом, в некоторых случаях в джейсоне случается переход на новую стройку не закрывая кавычки, и скрит уходит в ошибку.
File "test.py", line 4, in <module>
    contents = requests.get(url, verify=False).json()
  File "C:\Users\ivan\myvenv\lib\site-packages\requests\models.py", line 897, in json
    return complexjson.loads(self.text, **kwargs)
  File "C:\Users\ivan\AppData\Local\Programs\Python\Python37-32\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "C:\Users\ivan\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\ivan\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 14 column 83 (char 373)

Как убрать этот переход на новую строку?
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
@vhsporno Автор вопроса
abc = contents.text.replace('\r', ' ')
abc= abc.replace('\n', ' ')
bbb = json.loads(abc)

Решил вот таким образом
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@FulTupFul
Всё потому что данный url кроме json отдает и html. Лучше проверьте статус запроса и тип контента
from json import JSONDecodeError

if contents.status_code == 200 and contents.headers.get("Content-Type") == "application/json":
    try:
        data = contents.json()
    except JSONDecodeError:
        print("Error")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы