讲师中心 微信公众号
AI工具推荐 视频效率加速

使用 Selenium 高效提取网页表格中的多行文本数据

酷婷酱_1048

酷婷酱_1048

发布时间:2026-03-05 12:43:02

|

732人浏览过

|

来源于php中文网

原创

使用 Selenium 高效提取网页表格中的多行文本数据

本文讲解如何用 selenium 正确遍历动态表格中的所有目标元素(如比赛对阵名称),避免因错误索引、重复点击和页面跳转导致的数据遗漏,推荐采用 find_elements + 直接解析的简洁可靠方案。

本文讲解如何用 selenium 正确遍历动态表格中的所有目标元素(如比赛对阵名称),避免因错误索引、重复点击和页面跳转导致的数据遗漏,推荐采用 find_elements + 直接解析的简洁可靠方案。

在使用 Selenium 自动化抓取网页结构化数据时,一个常见误区是:为获取表格中每行的文本内容,先计算行数、再拼接 XPath、逐个点击跳转页面、返回后再重复操作——这不仅效率低下,还极易因页面重载、元素失效或索引错位(如原文中误用 number_of_pages_to_enter 替代循环变量 i)导致只提取到单条数据。

更专业、健壮的做法是:定位到所有目标元素集合,一次性获取并解析。以目标网站 https://www.tippmix.hu/sportfogadas#?q=nba&page=1 为例,其 NBA 赛程列表位于

的 中,每场比赛标题链接位于
内的 标签中,且完整信息(如 "Cleveland - Dallas")已直接嵌入该链接的可见文本内(含换行符分隔),无需跳转详情页。

以下是优化后的标准实现:

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

url = 'https://www.tippmix.hu/sportfogadas#?q=nba&page=1'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)

# 显式等待:确保所有比赛链接完全加载并可见
wait = WebDriverWait(driver, 10)
game_links = wait.until(
    EC.visibility_of_all_elements_located((By.XPATH, "//tbody/tr/td[@class='title']/a"))
)

cimek = []
for link in game_links:
    # 每个链接文本形如 "Kosárlabda, NBA\nCleveland - Dallas\n02.27. 18:00"
    lines = link.text.strip().split("\n")
    if len(lines) >= 2:
        opponent_pair = lines[1].strip()  # 取第二行:对阵双方
        cimek.append(opponent_pair)
        print(opponent_pair)

driver.quit()

✅ 关键改进点说明:

  • ✅ 避免手动索引与 XPath 拼接:原逻辑中 for i in range(...) 却始终使用 number_of_pages_to_enter,导致循环体实际只处理最后一行;改用 find_elements 直接获取全部匹配元素,天然规避索引越界与逻辑错乱。
  • ✅ 消除不必要的页面跳转:button.click() → browser.back() 不仅慢,还易触发反爬机制或状态丢失;而目标文本已在当前页 DOM 中,直接 .text 即可。
  • ✅ 增强健壮性:使用 visibility_of_all_elements_located 替代 presence_of_element_located,确保元素不仅存在,而且可见、可交互;配合 WebDriverWait 防止因加载延迟导致 NoSuchElementException。
  • ✅ 安全解析文本:对 .text 结果做 strip() 和 split("\n") 防御性处理,避免空行或格式异常引发 IndexError。

⚠️ 注意事项:

  • 若页面使用前端路由(如本例中的 #?q=nba&page=1),需确认 Selenium 加载后 JavaScript 已完成渲染;必要时可添加 time.sleep(1) 或监听特定元素出现。
  • //tbody/tr/td[@class='title']/a 是相对稳定的选择器,但若网站改版,建议优先使用语义化属性(如 data-testid)或 CSS 选择器(如 table tbody td.title a)提升可维护性。
  • 生产环境中应加入异常捕获(如 try/except StaleElementReferenceException),并在循环内对每个 link 做 .is_displayed() 校验。

综上,Selenium 数据提取的核心原则是:尽可能减少 DOM 状态变更(如点击、跳转),优先利用静态结构批量定位,辅以显式等待与防御性解析。这不仅能提升脚本稳定性与执行速度,也大幅降低后期维护成本。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
免费爬虫工具有哪些
免费爬虫工具有哪些

免费爬虫工具有Scrapy、Beautiful Soup、ParseHub、Octoparse、Webocton Scriptly、RoboBrowser和Goutte。更多关于免费爬虫工具的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5393

2023.11.10

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

693

2023.11.13

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

4950

2023.10.13

java测试工具有哪些
java测试工具有哪些

java测试工具有JUnit、TestNG、Mockito、Selenium、Apache JMeter和Cucumber。php还给大家带来了java有关的教程,欢迎大家前来学习阅读,希望对大家能有所帮助。

3341

2023.10.23

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

80

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

60

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

200

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

140

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

120

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn