Python无法读取有效的JSON

时间:2019-03-08 03:12:30

标签: python html json string encoding

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

这是代码:

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

运行上述操作会引发此错误:

10:49   Emulator: init: Could not find wglGetExtensionsString!

10:49   Emulator: getGLES2ExtensionString: Could not find GLES 2.x config!

10:49   Emulator: Failed to obtain GLES 2.x extensions string!

10:49   Emulator: Could not initialize emulated framebuffer

10:49   * daemon not running; starting now at tcp:5037

10:49   * daemon started successfully

10:49   Emulator: emulator: ERROR: OpenGLES emulation failed to initialize. Please consider the following troubleshooting steps:

10:49   Emulator: Process finished with exit code -1073741819 (0xC0000005)

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

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

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

我该如何解决?

4 个答案:

答案 0 :(得分:1)

您的JSON包含某些意外的令牌,例如id。首先使用true来解决它。

json.dumps

答案 1 :(得分:1)

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

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

print(s[7400:7500])
mailboxes.isPrimary=\\"true\\" AND ymreq

如skaul05所述,由于字符串中的true令牌而导致失败。

答案 2 :(得分:-1)

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()

答案 3 :(得分:-1)

如果它是有效的JSON格式的文本,则解析器不会抱怨。这就是我测试的方式

//first I scraped that page
curl https://finance.yahoo.com/quote/SPY > SPY.json
//then tried to parse it using json
a = open("SPY.json")
b = json.load(a)
ValueError: No JSON object could be decoded

您可能需要先将其解析为有效的xml。