使用Python的bs4和requests爬取Klaytn Scope代币余额表遇问题求助
解决Klaytn Scope代币余额数据爬取问题
直接用requests获取页面HTML再解析的方式行不通,因为Klaytn Scope的代币余额数据是前端通过异步API动态加载的,静态HTML里只有页面框架,没有实际的表格内容,所以BeautifulSoup找不到目标元素。
正确的解决方法:直接调用数据接口
通过浏览器开发者工具(F12)的Network面板筛选XHR请求,可以找到加载代币余额的官方API接口,直接请求该接口获取结构化数据即可。
1. 确定API接口
目标账户的代币余额接口为:https://scope.klaytn.com/api/v1/accounts/0xb5471a00bcc02ea297df2c4a4fd1d073465c662b/token-balances
接口支持分页(page、size参数),默认返回20条数据,如需全量数据可调整参数或循环分页请求。
2. 编写请求代码
直接请求API获取JSON格式数据,无需解析HTML:
import requests import pandas as pd import urllib3 urllib3.disable_warnings() # 目标API地址 api_url = "https://scope.klaytn.com/api/v1/accounts/0xb5471a00bcc02ea297df2c4a4fd1d073465c662b/token-balances" # 构造请求头,模拟浏览器请求 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" } # 发送GET请求 response = requests.get(api_url, headers=headers, verify=False) data = response.json() # 提取代币余额数据并转为DataFrame token_balances = data.get("items", []) df = pd.DataFrame(token_balances) # 按需筛选展示核心字段 print(df[["symbol", "name", "balance", "decimal"]])
3. 额外说明
- 该API返回结构化JSON数据,包含代币符号、名称、余额、小数位数等核心信息,比解析HTML更可靠高效。
- 如需获取更多数据,可添加分页参数,比如
params={"page": 2, "size": 50}来获取第二页的50条数据。 - 保持请求头的
User-Agent字段,避免被服务器识别为爬虫拦截。
内容的提问来源于stack exchange,提问作者jtoyhh
相关产品推荐
相关产品推荐

