ошибка json.decoder.JSONDecodeError при попытке отобразить данные json

#python #json #web-scraping

Вопрос:

Я работаю над проектом, в котором мне нужно удалить данные с веб-сайта.Я получаю 200 ответ, когда запускаю код без json. Но я сталкиваюсь raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) с отображением ответа json. вот мой код:

 import requests
import json


PARAMS = {"customCrawlParam": True, "categoryId": -11, "pageNumber": 1, "pageSize": 60, "crawlerInfo": "0aoAfanUmycYY9dVkR6C_tawcS4PTcat2tyeioefYJvTz-K_x_HTVGslqTelRkU5hNZUrTG6C2zGn-abo8Er2xr4oH-1xPuM7nyLIAJYOdY9lYQ3tCpr2VOBopWuu2iTCrAWW-nJ2I2nqdWxLrtzvWtwtAJkQgWNR7v6DA_Xg_8_bEjpDUezOkiknnz-17XSLeTXUzaO5EaIYv1epxQef3rsGabBJyl4TsJZGfd2Rj70huRosXUJxmjSNTFaBDX3jQ1c1WgOkF0HXXEuwCmS7_VCoWo0tYqPiJhDmsZ6VQB476mxPUQVmXm6UzmdIZ6t16Ov7wmaTlY18KoO00V9jIZJs8wx_q5s5lampf7saWD5wsX0EfnWBkSo1vMacbCNkAVKrIMVViGjrtxXmstaGZ_uDoHuOeV4_RTWMX_F-NjlT3G0XRBPEJBiW_5D6U_76LcqHApmDJ130DHuynsOrYu7_k0IGoet8SAA6wAVElfMY8-Hjc3rZLr061S7SGxHC7y0uJAy3NMHr_RWBRu4lsWFzzy0ZLlUN6S6i7eWgP"}

r = requests.get(
    "https://youhui.pinduoduo.com/search/landing?catId=-11", json=PARAMS)

print(r.status_code)


js1 = r.json()
# # data1 = json.dumps(js1, indent=4)
# #data2 = json.loads(r.decode("utf-8"))

print(js1)
 

вот результат, который я получаю:

 200
Traceback (most recent call last):
  File "e:PROJECTSfirst earntest.py", line 13, in <module>
    js1 = r.json()
  File "C:UsersAsusAppDataLocalProgramsPythonPython38libsite-packagesrequestsmodels.py", line 898, in json
    return complexjson.loads(self.text, **kwargs)
  File "C:UsersAsusAppDataLocalProgramsPythonPython38libjson__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:UsersAsusAppDataLocalProgramsPythonPython38libjsondecoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:UsersAsusAppDataLocalProgramsPythonPython38libjsondecoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
 

В парах я написал True вместо JSON true . Является ли это причиной проблемы?

Ответ №1:

Это не работает, потому что ответ не является json. Поэтому вы не можете загрузить его в формате json. Вот так просто.

Сделайте r.text это, чтобы увидеть ответ самостоятельно.

Комментарии:

1. но в инструменте разработки отображается ссылка на ответ JSON.. как я могу получить ответ json?

2. Скопируйте и вставьте r.text в онлайн-валидатор Json и посмотрите, что там написано…

3. @AsirShahriarRoudra Инструмент разработки делает для вас некоторые дополнительные вещи, такие как идентификация JSON в ответе и превращение его в объект, requests но не делает этого. Вам нужно проанализировать HTML, найти элемент с данными JSON и проанализировать JSON.