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

请求指导:用Selenium抓取Rootdata带分页动态表格(No token筛选)

使用Selenium抓取Rootdata筹款页面动态表格(筛选"No token"并提取前200行)

一、先搞定环境

  • 安装Selenium:在命令行执行 pip install selenium
  • 下载ChromeDriver:要和你电脑上的Chrome浏览器版本完全匹配,下载后把它放到和Python脚本同一个文件夹里,不用额外配置路径。

二、完整可运行代码(带新手友好注释)

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
from selenium.webdriver.support.ui import Select
import csv

# 初始化Chrome浏览器驱动
driver = webdriver.Chrome()
# 打开目标页面
driver.get("https://www.rootdata.com/Fundraising")
# 最大化窗口(避免元素被遮挡)
driver.maximize_window()

# 等待页面加载,直到筛选框出现(最多等10秒)
wait = WebDriverWait(driver, 10)

# 定位"Token Status"筛选下拉框(若定位失效,可通过F12重新获取xpath)
token_status_select = wait.until(EC.presence_of_element_located((By.XPATH, "//select[@placeholder='Token Status']")))
# 转换为Select对象,方便选择选项
select = Select(token_status_select)
# 选择"No token"选项
select.select_by_visible_text("No token")

# 等待筛选后的表格加载完成
wait.until(EC.presence_of_element_located((By.XPATH, "//table/tbody/tr")))

# 存储数据的列表
all_data = []

while len(all_data) < 200:
    # 获取当前页的所有表格行
    rows = driver.find_elements(By.XPATH, "//table/tbody/tr")
    
    # 遍历每一行提取数据
    for row in rows:
        if len(all_data) >= 200:
            break
        # 提取每一列文本(可根据实际列数调整)
        cols = row.find_elements(By.TAG_NAME, "td")
        row_data = [col.text.strip() for col in cols]
        all_data.append(row_data)
    
    # 未够200条则尝试点击下一页
    if len(all_data) < 200:
        try:
            next_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Next')]")))
            next_btn.click()
            # 等待下一页表格加载完成
            wait.until(EC.staleness_of(rows[0]))
        except:
            # 无下一页则退出循环
            break

# 关闭浏览器
driver.quit()

# 将数据写入CSV文件(表头可根据实际列名修改)
with open("rootdata_fundraising_notoken.csv", "w", newline="", encoding="utf-8-sig") as f:
    writer = csv.writer(f)
    writer.writerow(["项目名称", "融资轮次", "金额", "融资日期", "投资方", "Token状态"])
    writer.writerows(all_data)

print(f"已成功提取{len(all_data)}条数据,保存到rootdata_fundraising_notoken.csv")

三、新手必看关键要点

  • 显式等待:代码里的WebDriverWait会等目标元素出现后再操作,比time.sleep()更可靠,避免页面加载慢导致的报错。
  • 元素定位:如果运行时提示找不到元素,按F12打开开发者工具,重新获取筛选框、表格行、下一页按钮的xpath或class替换即可。
  • 分页逻辑:循环先抓当前页数据,够200就停;不够就点下一页,直到无下一页或数据达标。
  • CSV编码:用utf-8-sig编码是为了让Excel打开时不乱码。

四、常见问题解决

  • 驱动报错:检查ChromeDriver版本和Chrome浏览器版本是否完全匹配(比如Chrome是118.x,Driver也要是118.x)。
  • 元素点击失败:若元素被弹窗遮挡,可尝试关闭弹窗,或用driver.execute_script("arguments[0].click();", next_btn)强制点击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:16:09