首页 > 解决方案 > 如何使用 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

谢谢

标签: pythonbeautifulsoupyahoo-finance

解决方案


您可以使用re/ jsonmodule 来提取数据。

例如:

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'}

推荐阅读