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]
s = json.dumps(s)
json_data = json.loads(s)

一旦我检查了json_data的数据类型,我就会得到一个字符串。我假设 json 数据中可能存在一些文本编码错误,并且无法将其正确识别为 json 对象。

但是,当我尝试将数据转储到文件中并将其输入到在线 json 解析器中时,解析器可以正确读取 json 数据并识别键和值。

如何解决此问题,以便我可以正确访问 json 对象中的数据?

你必须

[119:-16]改成[112:-12],你可以得到json作为字典

import requests
from bs4 import BeautifulSoup
import json
url = 'https://finance.yahoo.com/quote/SPY'
result = requests.get(url)
html = BeautifulSoup(result.content, 'html.parser')
script = html.find_all('script')[-3].text
data = script[112:-12]
json_data = json.loads(data)
print(type(json_data))
#print(json_data)
print(json_data.keys())
print(json_data['context'].keys())
print(json_data['context']['dispatcher']['stores']['PageStore']['currentPageName'])

结果:

<class 'dict'>
dict_keys(['context', 'plugins'])
dict_keys(['dispatcher', 'options', 'plugins'])
quote

最新更新