将div元素转换为数据帧

问题描述 投票:0回答:1

我一直在试图找到一种有效的方法从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 pandas web-scraping beautifulsoup finance
1个回答
1
投票

试试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
© www.soinside.com 2019 - 2024. All rights reserved.