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

如何使用Python采集动态网页表格数据 现有Selenium脚本拓展求助

可行实现思路
  • 首先优化现有代码的基础缺陷:现有代码缺少import time依赖导入,且固定8秒等待的兼容性差,建议替换为selenium显式等待,指定等待目标元素加载完成后再执行解析,避免网络波动导致的元素获取失败。如果遇到Cloudflare人机验证,可直接用undetected-chromedriver替换原生ChromeDriver绕过验证。
  • 定位各数据模块的DOM节点完成提取:
    1. 原有总供应量、市值提取逻辑保持不变即可
    2. 代币交易表:在页面中定位最近交易对应的<table>节点,逐行遍历<tr>标签,依次提取每行的交易数量、代币名称、美元价值、BNB价值、代币单价、交易时间、钱包地址、操作按钮文本,清洗掉多余空格后按顺序拼接
    3. 买家/卖家榜单:分别定位页面上Buyers、Sellers对应的列表容器,逐行提取每行的钱包地址、累计交易金额、Track按钮文本即可
  • 输出格式调整:将各模块提取到的内容按照你需要的结构顺序打印,先输出总供应量、市值,再依次输出交易表、买家表、卖家表。

参考修改代码

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 若需要绕过Cloudflare验证,可替换为下面两行引入undetected_chromedriver
# import undetected_chromedriver as uc
# driver = uc.Chrome()

driver = webdriver.Chrome('chromedriver.exe')
url = "https://poocoin.app/tokens/0x84B7BB9614Cf28226d1b0a07499472bc107e3000"
driver.get(url)

# 显式等待最多15秒,等待核心元素加载完成
wait = WebDriverWait(driver, 15)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "px-3")))
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "table")))

soup = BeautifulSoup(driver.page_source, 'lxml')

# 原有总供应量、市值提取
ts = soup.find('div', class_='px-3')
x = list(ts.stripped_strings)[:5]
print(f'{x[0]}\n{x[1]}\n{x[2]}{x[3]}\n{x[4]}\n')

# 提取交易表
print("Token tx: gather all data in table")
tx_table = soup.select_one("table")  # 若定位不准可替换为更精准的css选择器
for row in tx_table.select("tr"):
    cols = [col.text.strip() for col in row.select("td") if col.text.strip()]
    if cols:
        print("\t".join(cols))
print()

# 提取买家表
print("Buyers: gather all data in table")
# 选择器可根据实际DOM结构调整,打开浏览器F12元素选择器点击对应模块即可获取精准选择器
buyer_container = soup.select_one("div.buyer-list") 
for item in buyer_container.select(".list-item"):
    item_data = [i.text.strip() for i in item.children if i.text.strip()]
    print("\t".join(item_data))
print()

# 提取卖家表
print("Sellers: gather all data in table")
# 选择器可根据实际DOM结构调整
seller_container = soup.select_one("div.seller-list")
for item in seller_container.select(".list-item"):
    item_data = [i.text.strip() for i in item.children if i.text.strip()]
    print("\t".join(item_data))

driver.quit()

注:代码里的CSS选择器需要你根据当前poocoin页面的实际DOM结构微调,打开浏览器F12元素选择器点击对应模块就能拿到精准的选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:04