我正在尝试使用pandas.read_html()从CoinMarketCap.com收集当前的加密货币价格信息。该功能的单个(手动)调用工作得很好:Open-High-Low-Close数据自动被拉入DataFrame。所以我做了一个简单的循环来为所有1495(和计数)加密币调用它,但它永远不会超过第10枚硬币,并且经常在第2次,第3次或第4次调用时停止。我已经包含了一小段代码来说明问题:
import pandas as pd
coin_list = ['bitcoin', 'ethereum', 'ripple', 'bitcoin-cash', 'cardano',
'stellar', 'neo', 'litecoin', 'eos', 'nem', 'iota', 'dash',
'monero', 'tron', 'icon', 'ethereum-classic', 'qtum',
'bitgem', 'vechain', 'lisk', 'populous', 'raiblocks']
d_coins = {}
for c in coin_list:
print('Getting data for: '+c)
url = 'https://coinmarketcap.com/currencies/'+c+'/historical-data/?start=20130428&end=20180129'
d_coins[c] = pd.read_html(url)[0]
代码将每个DataFrame放入字典中,以便稍后将其转换为Panel。即使是这个简短的样本也从未运行完成,但它永远不会抛出错误,如果我让它挂起几个小时。如果pandas.read_html()在第一次调用时失败或者至少引发了错误,那么它将继续存在,但它似乎只能在无限期挂起之前工作几次。有什么想法吗?
python版本:3.6.0
pandas版本:0.22.0
html5lib版本:1.0.1