从 Yahoo! 下载数据金融
Download data from Yahoo! Finance
您好,我最近参与了一个关于比特币分析的项目,需要从 Yahoo! 下载财务数据。通过 Python 融资。我尝试了 fix_yahoo_finance 和 pandas datareader,但下载文件时网站上似乎存在错误。它总是错过一些日子。所以我决定用美汤,代码如下:
import requests
import time
import pandas as pd
from bs4 import BeautifulSoup
def time_convert(dt):
time.strptime(dt,'%Y-%m-%d %H:%M:%S')
s = time.mktime(time.strptime(dt,'%Y-%m-%d %H:%M:%S'))
return str(int(s))
s = requests.Session()
start = time_convert("2016-02-15 00:00:00")
end = time_convert("2018-02-15 00:00:00")
r = s.get("https://uk.finance.yahoo.com/quote/BTC-USD/history?period1="+start+"&period2="+end+"&interval=1d&filter=history&frequency=1d"
soup = BeautifulSoup(r.text, 'lxml')
tables = soup.select('table')
df_list = []
for table in tables:
df_list.append(pd.concat(pd.read_html(table.prettify())))
df = pd.concat(df_list)
df.to_excel("E:\PythonData\price_"+'.xlsx')
它有效,但数据不完整,因为网站会在您的鼠标向下滚动到页面末尾时加载数据,但代码不会这样做。我该如何解决这个问题?
Yahoo 曾经有一个财务 api,他们已经终止了它,不过有一个解决方法。
我以前用过this成功过,你不妨看看。
您尝试过使用 Yahoo Financials 吗?它构建得非常好,不会废弃网页。它从 ["context"]["dispatcher"]["stores"] 对象中散列出你想要的数据。它速度非常快,而且制作精良。
$ pip 安装 yahoofinancials
使用示例:
from yahoofinancials import YahooFinancials
tech_stocks = ['AAPL', 'MSFT', 'INTC']
bank_stocks = ['WFC', 'BAC', 'C']
yahoo_financials_tech = YahooFinancials(tech_stocks)
yahoo_financials_banks = YahooFinancials(bank_stocks)
tech_cash_flow_data_an = yahoo_financials_tech.get_financial_stmts('annual', 'cash')
bank_cash_flow_data_an = yahoo_financials_banks.get_financial_stmts('annual', 'cash')
banks_net_ebit = yahoo_financials_banks.get_ebit()
tech_stock_price_data = tech_cash_flow_data.get_stock_price_data()
daily_bank_stock_prices = yahoo_financials_banks.get_historical_stock_data('2008-09-15', '2017-09-15', 'daily')
输出示例:
yahoo_financials = YahooFinancials('WFC')
print(yahoo_financials.get_historical_stock_data("2017-09-10", "2017-10-10", "monthly"))
returns
{
"WFC": {
"prices": [
{
"volume": 260271600,
"formatted_date": "2017-09-30",
"high": 55.77000045776367,
"adjclose": 54.91999816894531,
"low": 52.84000015258789,
"date": 1506830400,
"close": 54.91999816894531,
"open": 55.15999984741211
}
],
"eventsData": [],
"firstTradeDate": {
"date": 76233600,
"formatted_date": "1972-06-01"
},
"isPending": false,
"timeZone": {
"gmtOffset": -14400
},
"id": "1mo15050196001507611600"
}
}
您好,我最近参与了一个关于比特币分析的项目,需要从 Yahoo! 下载财务数据。通过 Python 融资。我尝试了 fix_yahoo_finance 和 pandas datareader,但下载文件时网站上似乎存在错误。它总是错过一些日子。所以我决定用美汤,代码如下:
import requests
import time
import pandas as pd
from bs4 import BeautifulSoup
def time_convert(dt):
time.strptime(dt,'%Y-%m-%d %H:%M:%S')
s = time.mktime(time.strptime(dt,'%Y-%m-%d %H:%M:%S'))
return str(int(s))
s = requests.Session()
start = time_convert("2016-02-15 00:00:00")
end = time_convert("2018-02-15 00:00:00")
r = s.get("https://uk.finance.yahoo.com/quote/BTC-USD/history?period1="+start+"&period2="+end+"&interval=1d&filter=history&frequency=1d"
soup = BeautifulSoup(r.text, 'lxml')
tables = soup.select('table')
df_list = []
for table in tables:
df_list.append(pd.concat(pd.read_html(table.prettify())))
df = pd.concat(df_list)
df.to_excel("E:\PythonData\price_"+'.xlsx')
它有效,但数据不完整,因为网站会在您的鼠标向下滚动到页面末尾时加载数据,但代码不会这样做。我该如何解决这个问题?
Yahoo 曾经有一个财务 api,他们已经终止了它,不过有一个解决方法。
我以前用过this成功过,你不妨看看。
您尝试过使用 Yahoo Financials 吗?它构建得非常好,不会废弃网页。它从 ["context"]["dispatcher"]["stores"] 对象中散列出你想要的数据。它速度非常快,而且制作精良。
$ pip 安装 yahoofinancials
使用示例:
from yahoofinancials import YahooFinancials
tech_stocks = ['AAPL', 'MSFT', 'INTC']
bank_stocks = ['WFC', 'BAC', 'C']
yahoo_financials_tech = YahooFinancials(tech_stocks)
yahoo_financials_banks = YahooFinancials(bank_stocks)
tech_cash_flow_data_an = yahoo_financials_tech.get_financial_stmts('annual', 'cash')
bank_cash_flow_data_an = yahoo_financials_banks.get_financial_stmts('annual', 'cash')
banks_net_ebit = yahoo_financials_banks.get_ebit()
tech_stock_price_data = tech_cash_flow_data.get_stock_price_data()
daily_bank_stock_prices = yahoo_financials_banks.get_historical_stock_data('2008-09-15', '2017-09-15', 'daily')
输出示例:
yahoo_financials = YahooFinancials('WFC')
print(yahoo_financials.get_historical_stock_data("2017-09-10", "2017-10-10", "monthly"))
returns
{
"WFC": {
"prices": [
{
"volume": 260271600,
"formatted_date": "2017-09-30",
"high": 55.77000045776367,
"adjclose": 54.91999816894531,
"low": 52.84000015258789,
"date": 1506830400,
"close": 54.91999816894531,
"open": 55.15999984741211
}
],
"eventsData": [],
"firstTradeDate": {
"date": 76233600,
"formatted_date": "1972-06-01"
},
"isPending": false,
"timeZone": {
"gmtOffset": -14400
},
"id": "1mo15050196001507611600"
}
}