我在Jupyter Note中有以下代码,我喜欢抓取CoinMarketCap站点:
url = 'https://coinmarketcap.com/all/views/all/'
df=pd.read_html(url, header=None)
df[0]
以前的输出是pandas数据帧,但现在是1623行×11列的列表,当我尝试时:
df_crypto = pd.DataFrame(df)
它只返回列名。所以,有什么想法吗?
发布于 2018-05-24 20:37:10
如果您想要收集此资产数据,我建议使用CoinMarketCap Api。当前您正在抓取HTML页面,并收集了大量多余的、不相关的信息。
我建议您执行以下操作:
import requests
r = requests.get('https://api.coinmarketcap.com/v2/ticker/')
x = r.json()
然后,您可以将此字典转换为pandas数据帧
发布于 2018-05-24 20:27:48
直接从的文档
返回: dfs : DataFrames的列表
您需要访问列表的所需索引(在本例中是第一个索引),并删除未命名的列。
示例
df = pd.read_html(url)
df = df[0].loc[:, ~df[0].columns.str.contains('^Unnamed')]
df.head(2)
# Result
# Name Symbol Market Cap Price Circulating Supply \
0 1 BTC Bitcoin BTC $129,198,417,887 $7576.52 17052475
1 2 ETH Ethereum ETH $59,151,386,138 $593.64 99642183
Volume (24h) % 1h % 24h % 7d
0 $6,196,160,000 -0.40% -0.32% -7.55%
1 $2,861,120,000 -0.22% 0.31% -13.54%
https://stackoverflow.com/questions/50517478
复制相似问题