#python #pandas
Вопрос:
пытаюсь подключить свой код сравнения цен к pandas
, но я получил ошибку:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
код выглядит так:
keyword = str(input('找什麼? '))
pages = 10
parse_word = urllib.parse.quote(keyword)
for page in list(range(1, pages)):
response = requests.get('https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=' parse_word 'amp;page=' str(page) 'amp;sort=rnk/dc')
raw_data = response.content.decode(encoding='utf-8')
data = json.loads(raw_data)
try:
myData = []
for product in data['prods']:
product_name = product['name']
prod_id = product['Id']
prod_price = product['price']
link = 'https://24h.pchome.com.tw/prod/' prod_id
myData.append({
"名稱":product_name,
"價格":prod_price,
"網址":link
})
today = str(datetime.date.today())
fileName = today '_' keyword '_Pchome.json'
try:
with open(fileName, 'w', encoding='utf-8') as f:
json.dump(myData, f, ensure_ascii=False, indent=4, skipkeys=True)
except Exception as err:
print(str(err))
except Exception as err:
print(str(err))
print('完成!')
df = pd.DataFrame(myData)
#print(df)
print('='*150)
print(df.nsmallest(10, '價格'))
print('='*150)
а вот сообщения об ошибках:
Traceback (most recent call last):
File "C:UsersChengDesktopPythonAutoshoppchome.py", line 24, in <module>
data = json.loads(raw_data)
File "C:UsersChengAppDataLocalProgramsPythonPython39libjson__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:UsersChengAppDataLocalProgramsPythonPython39libjsondecoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:UsersChengAppDataLocalProgramsPythonPython39libjsondecoder.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)
интересно, как это исправить
Комментарии:
1. Какая строка генерирует ошибку? Так ли это
data = json.loads(raw_data)
? Вы смотрели на значениеraw_data
, прежде чем пытаться расшифровать его как JSON? В нем может содержаться ключ к разгадке проблемы.2. Пожалуйста, всегда публикуйте полное сообщение об ошибке с полной обратной связью .
Ответ №1:
Вы должны заметить row_data
, что, возможно, содержимое в нем не соответствует формату JSON.
Например:
text = """{"str1": 'str2'}"""
json.loads(text)
и покажет
JSONDecodeError: Expecting value: line 1 column 10 (char 9)