在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路径相对稳定且唯一,我们可以直接通过定位器来获取它。
示例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>
以上就是Selenium Python:从Web表格中高效提取Span标签的文本内容的详细内容,更多请关注知识资源分享宝库其它相关文章!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。