- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
你们中的一些人现在可能已经知道,Yahoo! Finance 已停止使用其用于股票市场数据的 API。虽然我知道 fix-yahoo-finance
解决方案的存在,但我试图通过直接从 Yahoo 抓取历史数据来为我的代码实现一个更稳定的解决方案。
所以这是我目前拥有的:
import requests
from bs4 import BeautifulSoup
page = requests.get("https://finance.yahoo.com/quote/AAPL/history?period1=345423600&period2=1495922400&interval=1d&filter=history&frequency=1d")
soup = BeautifulSoup(page.content, 'html.parser')
soup
print(soup.prettify())
要从 Yahoo 表中获取数据,我可以这样做:
c=soup.find_all('tbody')
print(c)
我的问题是,如何将“c”变成更好的数据框?谢谢!
最佳答案
我写这个是为了直接从下载 csv 链接获取 YF 的历史数据。它需要发出两个请求,一个获取 cookie 和 crumb,另一个获取数据。它返回一个 Pandas 数据框
import re
from io import StringIO
from datetime import datetime, timedelta
import requests
import pandas as pd
class YahooFinanceHistory:
timeout = 2
crumb_link = 'https://finance.yahoo.com/quote/{0}/history?p={0}'
crumble_regex = r'CrumbStore":{"crumb":"(.*?)"}'
quote_link = 'https://query1.finance.yahoo.com/v7/finance/download/{quote}?period1={dfrom}&period2={dto}&interval=1d&events=history&crumb={crumb}'
def __init__(self, symbol, days_back=7):
self.symbol = symbol
self.session = requests.Session()
self.dt = timedelta(days=days_back)
def get_crumb(self):
response = self.session.get(self.crumb_link.format(self.symbol), timeout=self.timeout)
response.raise_for_status()
match = re.search(self.crumble_regex, response.text)
if not match:
raise ValueError('Could not get crumb from Yahoo Finance')
else:
self.crumb = match.group(1)
def get_quote(self):
if not hasattr(self, 'crumb') or len(self.session.cookies) == 0:
self.get_crumb()
now = datetime.utcnow()
dateto = int(now.timestamp())
datefrom = int((now - self.dt).timestamp())
url = self.quote_link.format(quote=self.symbol, dfrom=datefrom, dto=dateto, crumb=self.crumb)
response = self.session.get(url)
response.raise_for_status()
return pd.read_csv(StringIO(response.text), parse_dates=['Date'])
你可以这样使用它:
df = YahooFinanceHistory('AAPL', days_back=30).get_quote()
关于python - 使用 Python 从 Yahoo Finance 抓取历史数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44225771/
我想获取 Yahoo! 中给定交易品种的关键统计数据金融。 我找到了几种使用 Yahoo Finance API 获取统计数据的方法。例如获取Apple的名称(n),ask(a),bid(b),mar
我如何通过 C# 接收股票报价? Google Finance API 不是很有用 最佳答案 Google Finance API Alternative。Google Finance API 的免费
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我尝试按照 read.csv("http://ichart.finance.yahoo.com/table.csv?s=SPY") Not Working 的建议同时使用 http 和 https .
在过去的 3 年中,我一直在使用以下 URL,没有出现任何问题。但是,它已停止返回结果。 网址: https://query.yahooapis.com/v1/public/yql?q=select
我要求资深金融程序员提供最佳实践。 例如 PSUDO 代码: class Transaction(Model): order = ForeignKey() amount = Decim
我在一家专门从事金融的精品店工作。 我们考虑设计一种语言来描述与金融市场相关的金融实体。 这将主要用作某种脚本语言来替换在电子表格和 VBA 宏中运行的许多进程。 它必须很简单,事实上,它必须在幕后调
OrderBook充满了买卖订单。更新,新订单可能会执行交易。 我似乎找不到任何实现的示例。 我们可以为每个订单指定一个ID,并一一检查执行订单。但是我们想要可以扩展到数千个有效订单的产品。 我们可以
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
通过盈透证券的 API 方法 tickPrice 或 tickSize 接收金融报价数据时,数据将具有以下参数 tickerId(符号) 字段(1=买价、2=卖价、4=最后价、6=最高价、7=最低价、
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在编写一些用于股权的机器学习软件,并且希望找到一些即时数据或至少 3 或 5 分钟的数据。 我想要一两年的时间进行测试。 我并不关心数据来自哪个交易所,只要它来自某处的主要交易所即可。 还有什么地
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我是 QuickFix 的新手,我有几个关于 QuickFix 库的问题,我将非常乐意从您那里得到答案: 我计划开发 FIX 服务器,它可以同时从多个客户端获取 FIX 请求。对此, a) 如果我需要
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
只是想知道那里有什么样的免费金融 API。我正在寻找可以指定索引并通过股票代码获取该索引中包含的所有公司的列表的东西。 目前我只对在纽约证券交易所上市的公司股票感兴趣。我真的很感激任何关于 API 或
看起来应该是个简单的问题。我正在使用 Matlab 构建股票数据库和分析工具包。 我正在使用 Matlab 函数获取数据表,使用如下 URL: http://ichart.finance.yahoo.
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。 Improve this
我是一名优秀的程序员,十分优秀!