python - 如何使用 Python/BeautifulSoup 从 Yahoo Finance 中提取特定字段
问题描述
我想提取一家公司的流通股。请查看此链接作为示例:查看源代码:https ://finance.yahoo.com/quote/GE/key-statistics
我可以看到 floatShares 中的原始数据是我想要得到的:
"floatShares":{"raw":8733446536,"fmt":"8.73B","longFmt":"8,733,446,536"}
但是,当我使用 BeautifulSoup 时,即使我可以使用ctrl-F
. 谁能建议我如何在使用 Python/BeautifulSoup8733446536
调用的变量中捕获数字数据?floatShares
谢谢
解决方案
您可以使用re
/ json
module 来提取数据。
例如:
import re
import json
import requests
url = 'https://finance.yahoo.com/quote/GE/key-statistics'
html_text = requests.get(url).text
data = json.loads(re.search(r'root\.App\.main = (.*?\});\n', html_text).group(1))
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
print(data['context']['dispatcher']['stores']['QuoteSummaryStore']['defaultKeyStatistics']['floatShares'])
印刷:
{'raw': 8733446536, 'fmt': '8.73B', 'longFmt': '8,733,446,536'}
推荐阅读
- sql - Sql - 如何根据来自 mssql 的列生成唯一记录
- java - 从 Java 客户端向我的 Whatsapp 发送消息
- python - 如何使用 Loader 将 pandas DataFrame 对象加载为单独的表?
- angular - 角度 - 自定义纯管道作为单例实例?
- angular - (单击)使用 ngFor 变量
- maven - 如何在 FTPS 中使用 Wagon maven 插件
- reactjs - React 中的组件设计层次结构
- multithreading - 我想用 Clip 用 Java 播放 wav 文件,但是三个 java 文件都没有工作
- multithreading - 在线程之间发送数据的惯用方式是什么?
- c - 在函数内部重新声明一个结构或将其声明为静态并每次都设置为 0 会更好吗?