python - 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
推荐阅读
- javascript - 有没有办法减少迁移整个站点使用的 jQuery 和引导版本所花费的时间?
- sql - SQL 日期间隔每 6 个月
- python - Mypy 在方法签名上抛出无效语法
- facebook - 是否可以使用 Graph API 在 Instagram 上点赞?
- javascript - 使用淡入淡出改变背景图像
- xaml - 包含 ScrollViewer 的用户控件已禁用滚动条
- c++ - Boost Log record_ostream.hpp 不会编译
- jmeter - UI用户场景的负载测试 - Jmeter Webdriver采样器
- docker - Traefik - 502 错误网关
- scipy - 如何用 scipy 重新采样非周期信号?