#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.