Selenium Python:从Web表格中高效提取Span标签的文本内容

Selenium Python:从Web表格中高效提取Span标签的文本内容

本教程详细介绍了如何使用Python和Selenium从复杂的Web表格中准确提取特定<span>标签内的文本内容。文章提供了两种核心策略:直接通过定位器定位<span>元素,以及通过逐级遍历Web表格结构(表格->行->单元格)来定位目标信息。同时,教程还涵盖了Selenium的常用定位方法、文本获取技巧以及在实际应用中提升代码健壮性的最佳实践。

在web自动化测试和数据抓取中,从复杂的html结构,尤其是web表格中提取特定信息,是一项常见且关键的任务。当目标文本嵌套在<td>标签内的<span>标签中时,我们需要采用可靠的selenium定位策略来准确获取这些数据。

Selenium基础:元素定位与文本获取

在深入具体策略之前,了解Selenium如何定位元素以及如何获取其文本至关重要。

1. 元素定位器 (Locators) Selenium提供了多种定位策略,通过By类使用:

  • By.ID:通过元素的ID属性定位。
  • By.NAME:通过元素的Name属性定位。
  • By.CLASS_NAME:通过元素的Class属性定位。
  • By.TAG_NAME:通过元素的标签名定位。
  • By.LINK_TEXT:通过链接的完整可见文本定位。
  • By.PARTIAL_LINK_TEXT:通过链接的部分可见文本定位。
  • By.XPATH:通过XPath表达式定位,功能强大,可以定位页面上几乎任何元素。
  • By.CSS_SELECTOR:通过CSS选择器定位,性能通常优于XPath,且语法更简洁。

2. 文本获取方法

  • element.text (Python) / element.getText() (Java):这是获取元素可见文本的首选方法。它会返回元素及其所有子元素的可见文本,并且会忽略隐藏元素。对于本教程中<td>包含<span>的情况,直接获取<td>的.text通常就能得到<span>中的文本。
  • element.get_attribute(“innerText”):获取元素的“内部文本”,类似于element.text,但其行为在不同浏览器和某些边缘情况下可能略有差异。
  • element.get_attribute(“textContent”):获取元素的文本内容,包括隐藏元素的文本,通常与element.text不同。

对于本教程的场景,element.text通常是最佳选择。

策略一:直接定位目标Span标签

如果目标<span>标签具有独特的属性(如id、class)或其在页面中的XPath/CSS路径相对稳定且唯一,我们可以直接通过定位器来获取它。

立即学习Python免费学习笔记(深入)”;

示例HTML结构:

<td style="padding:2px 2px 2px 5px;width:25%;white-space:nowrap;text-align:left;">     <span tabindex="0">11/29/2023 04:01:10</span> </td>

Python代码示例:

 import time from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC  # 为了演示,我们使用无头模式和模拟HTML内容 options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--disable-gpu') driver = webdriver.Chrome(options=options)  mock_html_content = """ <!DOCTYPE html> <html> <head><title>Web Table Demo</title></head> <body>     <table id="myDataTable" border="1">         <tbody>             <tr>                 <td>Data 1-1</td>

css python java html 浏览器 ai webdriver css选择器 Python Java css html class 选择器 td 自动化

上一篇
下一篇