我正在从网页上抓取一些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()时会出现此错误?我以为这与字符串编码不正确或转义字符的存在有关?
我该如何解决?
答案 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。