python - 带有 Morningstar 的 Pandas Datareader

标签 python pandas web-scraping error-handling timer

我正在使用 Pandas 进行网页抓取并使用 Morningstar 的 API。我时不时地抓取一个带有晨星代码的网站,该代码会导致 python 崩溃。

我在下面添加了相关行,它几乎总是有效,我不认为我的代码导致了错误,但我无法避免 Pandas 卡住在我身上。此处的日期是一个变量,它的格式对于 DataReader 来说是正确的,不会产生问题。

import pandas as pd
import pandas_datareader.data as web

df = web.DataReader(ticker, "morningstar", date)

如果股票代码被卡住,几分钟后 pandas 将打印(它自己的,而不是我的打印语句)短语“添加(在此处插入股票代码)到重试列表”。消息弹出后不久,我会收到一个弹出窗口,显示“Python 意外退出”。

我尝试将数据读取器包装在一个带有计时器的 while 循环中,以停止它并继续执行下一个代码,但它不起作用。我假设这是因为控制流。 我还尝试使用 Interruptingcow 模块,希望它能有所帮助,但得到了与常规计时器相同的结果。

有办法解决这个问题吗?每次它都会使我的脚本崩溃。 我遇到的一些令人头疼的代码是“BBXTB”、“CRXPF”、“IMMVD”和“FFRMF”

最佳答案

我仍然不知道为什么股票行情会失败,并且正在调查。但是,我能够通过直接修改 pandas_datareader\mstar\daily.py 来允许失败不使脚本崩溃。 。

我的版本是0.6.0 。这些说明仅适用于该版本。

第 134 - 138 行如下所示:

if len(failed) > 0 and self.retry_count > 0:
    # TODO: This appears to do nothing since
    # TODO: successful symbols are not added to
    self._dl_mult_symbols(symbols=failed)
    self.retry_count -= 1

计数器位置错误,需要与上面的行交换,如下所示:

if len(failed) > 0 and self.retry_count > 0:
    # TODO: This appears to do nothing since
    # TODO: successful symbols are not added to
    self.retry_count -= 1
    self._dl_mult_symbols(symbols=failed)

这应该允许失败的调用正常退出,而不会导致堆栈溢出。

顺便说一下,https://github.com/pydata/pandas-datareader/blob/master/pandas_datareader/mstar/daily.py显示 @dtemkin 已直接修复了 pandas_datareader 的当前版本,因此可能会在下一个版本中发布/解决此问题。

您可以通过定位 python 存储其库的位置来找到该文件。我通过Visual Studio 2017安装了anaconda,文件位置在:C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pandas_datareader\mstar\daily.py

关于python - 带有 Morningstar 的 Pandas Datareader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519924/

相关文章:

Python:使用来自另一个命令的输入

pandas - 检查具有尚未编码的新特征的数据的标签

java - 有没有办法使用 selenium 提取 webElement 的显示名称?

python - 是否可以在设备上加载 .gpx 轨道以使用 appium 测试跟踪器?

python - Numpy 数组元素与 Float64 的比较

Python 无法导入 DataFrame

python - 读取带有页脚和末尾任意数量的空白行的 csv 时出现问题

python - 具有不同列的 Pandas concat 数据帧 : AttributeError: 'NoneType' object has no attribute 'is_extension'

python - Scrapy 抓取数据但没有输出到文件

javascript - Axios url get html响应请求为200,但response.data为空