请求指导:用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
相关产品推荐
相关产品推荐

