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

如何拆分网页爬取得到的数据行 提升输出内容可读性

Python Bscscan数据抓取结构化输出解决方案

问题背景

你用Python编写了针对bscscan站点的网页数据抓取脚本,可从指定地址页面提取合约、代币相关数据,脚本运行正常,但提取到的原始数据存在大量多余换行、格式混乱,可读性较差,需要将原始数据拆分后按指定结构化格式输出。

原有可运行代码

import requests, re, random
from bs4 import BeautifulSoup
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0'
}

url = "https://bscscan.com/address/0xe1fd7b4c9debac3c490d8a553c455da4979482e4"
req = requests.get(url,header, timeout=10)
soup = BeautifulSoup(req.content, 'html.parser')
creator = soup.find(id='ContentPlaceHolder1_trContract').get_text()
tokentracker = soup.find(id='ContentPlaceHolder1_tr_tokeninfo').get_text()

print (creator)
print (tokentracker)

原始输出(格式混乱)

ContractCreator:
0xab3a68876925ecc5f361cefe78b3dae78b971436 at txn 0xc78e35353426d2851be008bf4de269652a4ce1746d025fae5aabd72454a31715


TokenTracker:

 StackDoge (STACKDOGE)

期望结构化输出效果

Contract Owner: 0xab3a68876925ecc5f361cefe78b3dae78b971436
Transaction ID: 0xc78e35353426d2851be008bf4de269652a4ce1746d025fae5aabd72454a31715

Token Name: StackDoge (STACKDOGE)

修改后代码

import requests, re
from bs4 import BeautifulSoup
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0'
}

url = "https://bscscan.com/address/0xe1fd7b4c9debac3c490d8a553c455da4979482e4"
# 修正原代码参数错误:requests的请求头参数为headers
req = requests.get(url, headers=header, timeout=10)
soup = BeautifulSoup(req.content, 'html.parser')
creator_raw = soup.find(id='ContentPlaceHolder1_trContract').get_text()
tokentracker_raw = soup.find(id='ContentPlaceHolder1_tr_tokeninfo').get_text()

# 提取合约所有者地址和交易ID
creator_match = re.search(r'ContractCreator:\s*(0x[0-9a-fA-F]{40})\s*at txn\s*(0x[0-9a-fA-F]{64})', creator_raw)
if creator_match:
    contract_owner = creator_match.group(1)
    txn_id = creator_match.group(2)

# 提取代币名称
token_match = re.search(r'TokenTracker:\s*(.+)', tokentracker_raw)
if token_match:
    token_name = token_match.group(1).strip()

# 按要求格式输出
print(f"Contract Owner: {contract_owner}")
print(f"Transaction ID: {txn_id}")
print()
print(f"Token Name: {token_name}")

实现说明

  • 用正则表达式匹配固定格式的合约地址、交易哈希、代币名称,自动过滤多余的换行、空格等无效字符
  • 修正了原代码中requests.get请求头参数名写错的问题,避免后续请求失败
  • 增加了简单的匹配判断逻辑,防止页面结构变化导致的报错
  • 如果需要全中文输出,只需把print语句里的英文标识替换为中文即可,比如把Contract Owner替换为合约所有者

内容的提问来源于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 09:42:00