我一直在试图找到一种有效的方法从yahoo finance中提取一些财务信息,并用Python开发了以下代码。
import pandas as pd
from bs4 import BeautifulSoup
import requests
stock = "AAPL"
url = 'https://ca.finance.yahoo.com/quote/'+stock+'/cash-flow?p='+stock
soup = BeautifulSoup(requests.get(url).content, 'lxml')
headers = []
# GRAB HEADERS
head = soup.findAll("div", {"class": "D(tbr) C($primaryColor)"})
for row in head:
for cell in row:
headers.append(cell.text)
# GRAB DATA
data = soup.findAll("div", {"class": "rw-expnded"})
for row in data:
for cell in row:
for a in cell:
"**DO STUFF**"
我的问题是表格中的数据。有一些行标题,比如 "经营活动产生的现金流",在它们下面还有子标题。使事情变得困难的是,不管一行是什么级别(标题或子标题),它都有相同的类名和标签。
我的最终目标是创建一个类似于网页上的pandas数据框架(https:/ca.finance.yahoo.comquoteAAPLcash-flow?p=AAPL。). 有谁有什么建议可以实现吗?
试试python包 yahooquery. 这些数据可以很简单的检索出来。
from yahooquery import Ticker
aapl = Ticker('aapl')
cash_flow = aapl.cash_flow() # pass 'a' for annual, default is 'q' for quarterly
由此产生的数据框架是相反的 它看起来像在雅虎金融虽然。 要想让它看起来更像你通过Yahoo Finance看到的那样,只需这样做。
cash_flow.T