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

如何从指定URL抓取JSON文件并打印内容?代码运行失败求助

解决CoinMarketCap快速搜索JSON抓取失败的问题

Hey,我瞅了下你写的代码,没法正常工作的核心原因是CoinMarketCap的基础反爬机制把你的请求拦住了——requests库默认的请求头没有携带浏览器标识,网站会直接拒绝返回有效的JSON内容,导致你用json.loads解析时出错。

给你改好了代码,主要加了模拟浏览器的请求头,还优化了错误处理:

import requests
import json

url = "https://s2.coinmarketcap.com/generated/search/quick_search.json"
# 添加模拟真实浏览器的请求头,绕过基础反爬
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

try:
    # 携带请求头发起请求
    r = requests.get(url, headers=headers)
    # 先检查请求是否成功,比如403、500这类状态码会直接抛出异常
    r.raise_for_status()
    # 用requests内置的json()方法解析,比手动loads更省心
    cont = r.json()
    print(cont)
except requests.exceptions.HTTPError as e:
    print(f"请求失败,状态码错误:{e}")
except json.JSONDecodeError:
    print("返回的内容不是有效的JSON,大概率还是被反爬拦截了,可以试试更新User-Agent")

几个关键的修复细节:

  • 添加User-Agent:这是最基础的反反爬手段,让网站误以为请求来自真实的浏览器,而不是自动化脚本
  • 用r.json()代替json.loads(r.content):requests已经封装了JSON解析逻辑,能自动处理编码问题,代码更简洁
  • 增加异常捕获:能帮你快速定位问题——是请求被拦截了,还是返回内容有问题

另外要提醒下,CoinMarketCap的反爬规则可能会随时更新,如果以后这个方法失效了,建议优先考虑使用他们的官方API(如果有开放的话),避免触发更严格的反爬措施。

内容的提问来源于stack exchange,提问作者j.doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:48:39