You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Requests实现CoinMarketCap爬虫返回空记录问题求助

CoinMarketCap爬虫返回空数据解决方案

核心问题定位

  • 你当前使用的https://api.coinmarketcap.com/data-api/v3/topsearch/rank是站点热门搜索排名接口,本身返回的内容就不是全量加密货币列表,和你要爬取64页全量币种的需求不匹配。
  • 缺少必要的请求头参数,站点反爬策略会拦截无合法请求头的请求,导致返回空或者异常数据。

可用实现代码

import requests
import pandas as pd
import time

# 全量币种列表接口
url = "https://api.coinmarketcap.com/data-api/v3/cryptocurrency/listing"
# 配置请求头模拟浏览器请求
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Accept": "application/json"
}
all_crypto_data = []

# 循环爬取1-64页数据
for page in range(1, 65):
    # 分页参数,默认每页100条,按市值降序排序
    params = {
        "start": (page - 1) * 100 + 1,
        "limit": 100,
        "sortBy": "market_cap",
        "sortType": "desc",
        "convert": "USD"
    }
    try:
        response = requests.get(url, headers=headers, params=params, timeout=15)
        # 校验请求是否成功
        response.raise_for_status()
        page_data = response.json()
        # 提取当前页的币种数据
        crypto_list = page_data["data"]["cryptoCurrencyList"]
        all_crypto_data.extend(crypto_list)
        print(f"第{page}页爬取完成,累计获取{len(all_crypto_data)}条数据")
        # 增加请求间隔避免触发频率限制
        time.sleep(2)
    except Exception as e:
        print(f"第{page}页爬取失败,错误信息:{str(e)}")
        continue

# 将所有数据存入DataFrame
df = pd.DataFrame(all_crypto_data)
# 可打印预览前5行数据
print(df.head())

注意事项

  • 如果后续站点更新接口参数或者返回结构,可以打开浏览器开发者工具的「网络」面板,重新抓取最新的listing接口配置即可
  • 请控制爬取频率,避免短时间发起大量请求导致IP被站点限制
  • 爬取的数据仅可用于个人学习,需遵守站点相关使用规则

内容的提问来源于stack exchange,提问作者Snyder Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:12:03