首页 > 解决方案 > 如何从股票代码列表中从雅虎财经中抓取/提取特定的资产负债表字段?

问题描述

我在一个名为 stocktickers.csv 的文件中有一个代码列表(如下所示):

行情
AMD
苹果
脸书
微软
谷歌

我想从该列表中抓取 Yahoo Finance 资产负债表数据并将其输入到 stocktickers.csv 文件中,如下所示。“有形账面价值”和“已发行股份”是每个股票代码的资产负债表网页上的字段,例如 AMD 的:https ://finance.yahoo.com/quote/AMD/balance-sheet?p=AMD 。

行情 有形_BV 股份_已发行
AMD 1,000,000 500,000
苹果 2,000,000 200,000
脸书 3,000,000 300,000
微软 500,000 50,000
谷歌 4,000,000 400,000

这是我到目前为止所拥有的,它刮掉了所有年份的有形账面价值。

from bs4 import BeautifulSoup
import requests


header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}

url = 'https://finance.yahoo.com/quote/AAPL/balance-sheet?p=AAPL'

response = requests.get(url, headers=header)

html = response.text
soup = BeautifulSoup(html, "html.parser")
main = soup.find("div", {"data-reactid": "195"}) #or 196
divs = main.find_all("div")

for div in divs:
    span = div.find("span")
    try:
        print(span.text)
    except:
        pass

结果:

   Tangible Book Value
Tangible Book Value
65,339,000
90,488,000
107,147,000
126,032,000

如果有一种方法可以使用get_balance_sheet()(来自yfinance 模块)来抓取特定的资产负债表字段,例如上面的那些,那也很棒。

标签: pythonweb-scrapingfinancestockyahoo-finance

解决方案


尝试金融建模准备 API。您可以非常轻松地从 JSON 请求中获取该信息,因此您不必抓取它。


推荐阅读