使用Selenium爬取网页表格运行无输出问题求助
问题排查及修复方案
核心问题梳理
- CSS选择器语法错误:你使用
id-table-spiel tr作为CSS选择器不符合规范,ID选择器需要前缀#,正确写法为#id-table-spiel tr,这是你获取不到表格内容、无输出的最直接原因。 - Selenium方法适配问题:Selenium 4.x版本已废弃
find_elements_by_css_selector这类旧API,统一使用find_elements(By.CSS_SELECTOR, 选择器)的调用方式,旧方法在高版本环境中会直接失效。 - 页面等待逻辑缺失:点击「Letzte Spielwoche」选项后,表格需要加载渲染时间,你没有在这一步添加等待,代码会在表格渲染完成前就执行元素查询,返回空列表。
- 冗余操作可优化:你代码中多处
ActionChains的移动元素操作没有必要,可直接点击可见元素,多余操作反而可能引入交互异常。
修正后可运行代码
from selenium.webdriver import Firefox from selenium.webdriver.common.by import By import time # 注意替换为你本地真实的geckodriver绝对路径 driver = Firefox(executable_path='/Users/你的真实路径/PycharmProjects/Sportwinner/geckodriver') driver.get("https://bskv.sportwinner.de/") # 执行配置交互 driver.find_element(By.ID, "id-button-einstellungen").click() driver.find_element(By.ID, "id-klub-name").click() driver.find_element(By.ID, "id-klub-name").send_keys("Dreieck Schweinfurt") driver.find_element(By.ID, "id-button-einstellungen-option-ok").click() time.sleep(1) # 选择联赛选项 driver.find_element(By.ID, "id-dropdown-liga").click() driver.find_element(By.LINK_TEXT, "Letzte Spielwoche").click() # 等待表格渲染完成,网络慢可以改成2-3秒 time.sleep(2) # 正确获取表格行元素 tableContent = driver.find_elements(By.CSS_SELECTOR, "#id-table-spiel tr") for row in tableContent: print(row.text) # 用完记得关闭浏览器 driver.quit()
运行注意事项
- 确认geckodriver的路径填写正确,不要保留省略号占位符,也可以将geckodriver放到系统环境变量PATH中,就可以省略
executable_path参数。 - 如果运行仍无输出,可以适当调大
time.sleep的时长,避免网络延迟导致的页面未加载完成问题。后续熟练后可以替换为Selenium的显式等待逻辑,效率更高。
内容的提问来源于stack exchange,提问作者vinceling
相关产品推荐
相关产品推荐

