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

JSON网页抓取字符串操作问题:requests.get拼接无输出排查

解决requests.get()字符串拼接导致无法获取超长矩阵数据的问题

嘿,我来帮你排查这个问题!你提到的手动拼接URL确实很容易踩坑,尤其是处理超长矩阵里的地址数据时,编码、格式或者未处理的异常都可能导致程序悄无声息地停住,完全看不到输出。咱们一步步来解决:

核心问题分析

直接用字符串拼接URL参数,很容易出现以下问题:

  • URL编码遗漏:虽然以太坊地址通常是0x开头的十六进制字符,但如果你的DepositMatrix里存在格式异常的地址(比如带空格、特殊符号),手动拼接会导致请求URL无效。
  • 无异常捕获:超长矩阵循环请求时,只要某一次请求超时、连接失败或者返回非JSON内容,程序就会直接崩溃,你根本看不到任何输出,还以为是拼接的问题。
  • 无进度反馈:处理大量数据时,程序在后台运行但没有任何打印,很容易让你误以为它没在工作。

改进后的代码示例

我把你的代码做了针对性优化,解决这些问题:

import requests
import json
import time  # 用于控制请求速率,避免被封禁

# 假设DepositMatrix已提前声明并赋值
balance = []
total_addresses = len(DepositMatrix)

for q in range(total_addresses):
    target_address = DepositMatrix[q][0]
    try:
        # 用requests的params参数自动处理编码,替代手动拼接URL
        response = requests.get(
            "https://ethplorer.io/service/service.php",
            params={"data": target_address},
            timeout=15  # 设置超时,避免卡壳
        )
        # 检查HTTP响应状态码,4xx/5xx错误直接抛出异常
        response.raise_for_status()
        
        # 解析JSON数据
        data4 = response.json()
        balance.append(data4)
        
        # 打印进度,让你知道程序在运行
        print(f"✅ 处理第 {q+1}/{total_addresses} 个地址成功")
        
        # 加个小延时,避免请求太频繁被网站限制
        time.sleep(0.5)
        
    except requests.exceptions.RequestException as e:
        # 捕获所有请求相关异常,打印错误信息
        print(f"❌ 处理第 {q+1} 个地址失败: {str(e)}")
        continue
    except json.JSONDecodeError as e:
        # 捕获JSON解析失败的情况,打印部分响应内容排查
        print(f"❌ 解析第 {q+1} 个地址响应失败: {str(e)}")
        print(f"响应内容预览: {response.text[:300]}")
        continue

# 最后输出处理结果统计
print(f"\n🎉 全部处理完成!成功获取 {len(balance)} 个地址的余额数据")

关键优化点说明

  • 用params替代手动拼接:requests会自动对参数做URL编码,彻底避免拼接时的格式问题,这也是官方推荐的传参方式。
  • 全面异常捕获:覆盖了请求超时、连接错误、HTTP错误、JSON解析错误等所有可能的异常,确保一个地址处理失败不会导致整个程序终止,还能明确看到错误原因。
  • 进度与结果反馈:每处理一个地址就打印进度,最后统计成功数量,再也不会误以为程序没运行。
  • 请求速率控制:添加time.sleep()避免短时间内发送大量请求,防止被目标网站的反爬机制封禁IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:33:35