如何获取BSCScan指定代币地址最新DEX交易记录并转为pandas DataFrame
实现方案汇总
1. Selenium tbody元素转pandas DataFrame实现
你获取到tbody对象后,可通过遍历行、列元素提取数据后生成DataFrame,完整代码修改如下:
import pandas as pd from selenium import webdriver import time PATH = 'C:/Users/XX/Downloads/chromedriver_win32/chromedriver.exe' driver = webdriver.Chrome(PATH) # 隐式等待避免元素未加载完成 driver.implicitly_wait(10) driver.get('https://bscscan.com/token/0x20de22029ab63cf9a7cf5feb2b737ca1ee4c82a6#tokenTrade') print(driver.title) # 等待表格加载完成 time.sleep(2) tbody = driver.find_element_by_css_selector("tbody") # 提取所有行元素 tr_list = tbody.find_elements_by_tag_name("tr") # 定义表头,和BSCScan交易列表列对应 columns = ["交易哈希", "区块", "时间戳", "交易类型", "价格", "交易数量", "总价值", "买入方", "卖出方", "交易平台"] data = [] for tr in tr_list: td_list = tr.find_elements_by_tag_name("td") # 提取每一列的文本内容 row = [td.text.strip() for td in td_list] if row: data.append(row) # 生成DataFrame df = pd.DataFrame(data, columns=columns[:len(data[0])]) print(df) # 可直接导出为csv df.to_csv("bsc_dex_trades.csv", index=False, encoding="utf-8-sig") driver.close()
注意:该方案只能获取当前分页的交易数据,如需获取全量数据需要额外实现分页点击逻辑,同时要注意BSCScan的反爬机制可能会触发人机验证。
2. 更高效的BSCScan官方API方案
BSCScan官方提供了公开API可直接获取代币交易数据,无需爬虫,稳定性更高:
- 你需要先在BSCScan官网注册账号获取免费API Key
- 调用接口核心参数如下:
module=account action=tokentx contractaddress=你的代币合约地址 startblock=起始区块号 endblock=结束区块号 sort=asc apikey=你申请的API Key - 接口返回JSON格式数据,可直接解析后生成DataFrame,免费版调用限制为每秒5次,单日最高10万次调用,满足普通使用需求。
内容的提问来源于stack exchange,提问作者hengjuice
相关产品推荐
相关产品推荐

