如何用python从雅虎财经网站上下载苹果公司过去10年的收入数据
时间: 2024-09-29 07:01:40 浏览: 66
在Python中,你可以使用`pandas_datareader`库配合`requests`和`BeautifulSoup`来抓取和处理来自Yahoo Finance的数据。首先确保安装了所需库,如果未安装,可以使用`pip`命令安装:
```bash
pip install pandas pandas_datareader requests beautifulsoup4
```
下面是一个简单的示例,说明如何获取苹果公司(AAPL)过去10年的季度收入数据:
```python
import pandas as pd
from pandas_datareader import data as pdr
from bs4 import BeautifulSoup
import requests
# Yahoo Finance API地址
url_template = "https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1={}&period2={}&interval=1q&events=history"
# 获取当前日期的时间戳
today = pd.Timestamp.now()
ten_years_ago = today - pd.DateOffset(years=10)
# 构造API查询参数
start_date = int(ten_years_ago.timestamp() * 1000) # 转换为毫秒
end_date = int(today.timestamp() * 1000) # 当前时间
response = requests.get(url=url_template.format(start_date, end_date))
content = response.text
# 解析HTML内容找到表格
soup = BeautifulSoup(content, 'html.parser')
table = soup.find('table', {'class': 'W(100%)'})
# 提取数据并转化为DataFrame
data = []
headers = [th.text for th in table.find_all('th')[:-1]]
for row in table.find_all('tr')[1:]:
cols = row.find_all('td')
data.append([col.text.strip() for col in cols])
df_income = pd.DataFrame(data[1:], columns=headers)
df_income['date'] = pd.to_datetime(df_income['date'])
df_income.set_index('date', inplace=True)
print(df_income.head())
```
注意:Yahoo Finance的免费API可能会有所限制,对于频繁或大量的请求,可能需要设置请求间隔或考虑其他数据源。此外,由于网页结构可能会变化,上述代码未来可能会失效,因此建议查看Yahoo Finance的开发者文档了解最新信息。
阅读全文