如何抓取Current Holdings表格?现有Selenium代码求助
修正后的Current Holdings表格抓取方案
问题排查与修正要点
- 补充缺失的
selenium核心模块导入,否则代码会因找不到webdriver对象报错 - 补全目标网页的完整URL,当前
url = 'https:/'为无效地址 - 调整等待条件:表格元素无需可点击权限,改用
EC.presence_of_element_located等待元素加载完成即可,避免不必要的判断逻辑 - 确保表格ID
dgtopHolders与实际页面元素匹配,可通过浏览器开发者工具(F12)验证
修正后的完整代码
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 import pandas as pd # 配置Firefox浏览器选项 options = webdriver.FirefoxOptions() options.binary_location = r'C://Mozilla Firefox/firefox.exe' # 初始化浏览器驱动(Selenium 3.x版本写法) driver = webdriver.Firefox(executable_path='C://geckodriver.exe', options=options) # 替换为目标网页的完整URL url = 'https://目标网站完整地址' driver.get(url) # 等待表格元素加载完成 table = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.ID, 'dgtopHolders')) ) # 解析表格HTML并转换为DataFrame dfs = pd.read_html(table.get_attribute('outerHTML')) print(dfs[0]) # 关闭浏览器释放资源 driver.quit()
针对Selenium 4.x版本的适配
若使用Selenium 4.0及以上版本,executable_path参数已被废弃,需改用Service类指定驱动路径,代码调整如下:
from selenium.webdriver.firefox.service import Service # 替换原驱动初始化代码 service = Service('C://geckodriver.exe') driver = webdriver.Firefox(service=service, options=options)
额外注意事项
- 若表格通过AJAX动态加载,可适当延长等待时间(如将
20改为30) - 若页面存在iframe嵌套表格,需先切换到对应iframe再执行表格抓取逻辑
内容的提问来源于stack exchange,提问作者Agustos Imola
相关产品推荐
相关产品推荐

