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

如何提取BSCscan合约页面0x格式十六进制字符串及其对应属性标签

问题原因

  • CSS选择器使用错误:readContractAccordion是元素ID,调用select_one时需要添加#前缀才能正确匹配
  • 缺少请求头伪装:BSCscan会拦截无合法User-Agent的请求,返回的内容不包含完整的读合约模块数据
  • 缺少元素解析逻辑:定位到父容器后,还需要遍历每个合约读取项,提取对应序号、属性名和十六进制地址

修正后可用代码

import re
import requests
from bs4 import BeautifulSoup as bs

# 伪装浏览器请求头
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"
}

url = "https://bscscan.com/readContract?m=normal&a=0xe1fd7b4c9debac3c490d8a553c455da4979482e4"
address = url.split("a=")[-1]
# 匹配标准42位0x开头地址的正则规则
addr_pattern = re.compile(r"0x[a-fA-F0-9]{40}")

r = requests.get(url, headers=headers)
soup = bs(r.text, "lxml")
# 正确定位读合约父容器
parent = soup.select_one("#readContractAccordion")
# 获取所有合约读取项节点
card_items = parent.select(".card")

print(f"Address:  {address}")
for item in card_items:
    # 提取项序号
    num = item.select_one(".font-weight-medium").text.strip().removesuffix(".")
    # 提取属性名
    func_name = item.select_one(".text-monospace").text.strip()
    # 提取内容中的地址
    content = item.select_one(".card-body").text
    addr_match = addr_pattern.search(content)
    if addr_match:
        # 格式化对齐输出
        print(f"{num:>3}. {func_name:<25}: {addr_match.group()}")

运行输出效果

Address:  0xe1fd7b4c9debac3c490d8a553c455da4979482e4
  1. DOGE                     : 0xba2ae424d960c26247dd6c32edc70b295c744c43
  4. _marketingWalletAddress  : 0x12345411294d0fddf644800e3a524cb73ffdfe7f
  8. deadWallet               : 0x000000000000000000000000000000000000dead
 11. dividenTracker           : 0x7cf7ea291e26bc3d8796c876f1d63befbdc5f22c
 23. owner                    : 0xab3a68876925ecc5f361cefe78b3dae78b971436
 28. uniswapV2Pair            : 0xd6a499cbe432bfe88c62a27d7e1437ddafe3a95a
 29. uniswapV2Router          : 0x10ed43c718714eb63d5aa57b78b54704e256024e

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:57:03