我在Jupyter中有以下代码注意我想刮掉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)
它只返回列名。那么,任何想法?
答案 0 :(得分:1)
如果您想收集此资产数据,我建议您使用CoinMarketCap Api。目前,您正在抓取HTML页面并收集大量过多的,无关紧要的信息。
我建议你做以下事情:
import requests
r = requests.get('https://api.coinmarketcap.com/v2/ticker/')
x = r.json()
然后,您可以将此字典转换为pandas数据帧
答案 1 :(得分:0)
直接来自pandas.read_html
返回: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%