Python未读取有效的JSON

我正在从网页中抓取一些 HTML 源代码以提取以 json 格式存储的数据


这是代码:


url = 'https://finance.yahoo.com/quote/SPY'

result = requests.get(url)


c = result.content

html = BeautifulSoup(c, 'html.parser')

scripts = html.find_all('script')


sl =[]

for s in scripts:


     sl.append(s)


s = (sl[-3])

s = s.contents

s = str(s)

s = s[119:-16]


json_data = json.loads(s)

运行上面的会抛出这个错误:


json.decoder.JSONDecodError: Expecting ',' delimiter: line 1 column 7506 (char7505)

当我获取变量 s 的内容并将其传递给 json 格式化程序时,它被识别为正确的 json。


我使用以下网站检查 json:http : //jsonprettyprint.com/json-pretty-printer.php


为什么在 Python 中使用 json.loads() 时会出现此错误?我假设它与未正确编码的字符串或存在转义字符有关?


我该如何解决这个问题?


慕侠2389804
浏览 161回答 3
3回答

蓝山帝景

您的 JSON 包含某些意外的标记,例如true. json.dumps首先使用来解决它。print (json.dumps(s,indent =2))s = json.dumps(s)json_data = json.loads(s)

LEATH

json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 7484 (char 7483)使用失败消息,您可以打印字符串的一部分以查看它失败的地方。print(s[7400:7500])mailboxes.isPrimary=\\"true\\" AND ymreq正如 skaul05 所说,由于true字符串中的标记,它失败了。

泛舟湖上清波郎朗

import requestsfrom bs4 import BeautifulSoupimport jsonurl = 'https://finance.yahoo.com/quote/SPY'result = requests.get(url)c = result.contenthtml = BeautifulSoup(c, 'html.parser')scripts = html.find_all('script')sl =[]for s in scripts:     sl.append(s)s = (sl[-3])s = s.contentsa = s[0][111:-12]jjjj = json.loads(a)处理列表时出现问题,您只需使用 str()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python