为了账号安全,请及时绑定邮箱和手机立即绑定

Python未读取有效的JSON

Python未读取有效的JSON

慕侠2389804 2021-11-30 10:17:23
我正在从网页中抓取一些 HTML 源代码以提取以 json 格式存储的数据这是代码:url = '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.contentss = 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() 时会出现此错误?我假设它与未正确编码的字符串或存在转义字符有关?我该如何解决这个问题?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您的 JSON 包含某些意外的标记,例如true. json.dumps首先使用来解决它。


print (json.dumps(s,indent =2))

s = json.dumps(s)

json_data = json.loads(s)


查看完整回答
反对 回复 2021-11-30
?
LEATH

TA贡献1936条经验 获得超6个赞

json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 7484 (char 7483)

使用失败消息,您可以打印字符串的一部分以查看它失败的地方。


print(s[7400:7500])

mailboxes.isPrimary=\\"true\\" AND ymreq

正如 skaul05 所说,由于true字符串中的标记,它失败了。


查看完整回答
反对 回复 2021-11-30
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

import requests

from bs4 import BeautifulSoup

import 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


a = s[0][111:-12]


jjjj = json.loads(a)

处理列表时出现问题,您只需使用 str()


查看完整回答
反对 回复 2021-11-30
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信