Python Beautiful Soup - 雅虎财经数据,年度与季度

时间:2017-12-07 01:09:27

标签: python beautifulsoup

我有一个关于使用美丽的汤解析雅虎财务页面的快速问题。

以下是我想从中提取数据的页面示例。

https://finance.yahoo.com/quote/AAPL/cash-flow?p=AAPL

我成功地从使用BeautifulSoup中提取数据,但我无法弄清楚如何在年度数据与季度数据之间切换。因此,我只能提取年度数据。切换到季度时,网址似乎没有变化。从浏览器检查,它似乎切换一个表,我不知道如何处理使用美丽的汤。

我想知道是否有人有任何建议? 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以隔离页面上的json并获取所有年度和季度现金流量表。

url = 'https://finance.yahoo.com/quote/AAPL/financials?p=AAPL'
html = requests.get(url).text
soup = BeautifulSoup(html,'html.parser')

soup_script = soup.find("script",text=re.compile("root.App.main")).text
json_script = json.loads(re.search("root.App.main\s+=\s+(\{.*\})",soup_script)[1])
fin_data = json_script['context']['dispatcher']['stores']['QuoteSummaryStore']

cash_yr = fin_data['cashflowStatementHistory']['cashflowStatements']
cash_qtrs = fin_data['cashflowStatementHistoryQuarterly']['cashflowStatements']

资产负债表(balanceSheetHistory,balanceSheetHistoryQuarterly)和损益表(incomeStatementHistory,incomeStatementHistoryQuarterly)也在那里。

答案 1 :(得分:0)

@用户 试试这个:

json.loads(re.search("root.App.main\s+=\s+(\{.*\})",soup_script).group(1))

@Aran Freel 试试这个:

cf_annual = {}
for yr in range(len(cash_yr)):
    cf_annual[yr] = pd.DataFrame(cash_yr[yr]).T

cf_annual