小能豆

如何使用 python selenium 从 span 元素中提取多个文本?

py

我正在尝试使用 Selenium webdriver 方法中的以下 HTML 代码将范围中的所有文本提取到列表中:

['1a', '1b', '1c', '2a', ' ', ' ', '3a', '3b', '3c', '4a', ' ', ' ']

有哪位专家知道该怎么做吗?

HTML:

<tr style="background-color:#999">
    <td><b style="white-space: nowrap;">table_num</b><enter code here/td>
        <td style="text-align:center;">
            <span style="flex: 1;display: flex;flex-direction: column;">
                <span>1a</span>
                <span>1b</span>
                <span>1c</span>
                </span>
        </td>
        <td style="text-align:center;">
            <span style="flex: 1;display: flex;flex-direction: column;">
                <span>2a</span>
                <span>     </span>
                <span>     </span>
           </span>
        </td>
        <td style="text-align:center;">
            <span style="flex: 1;display: flex;flex-direction: column;">
                <span>3a</span>
                <span>3b</span>
                <span>3c</span>
            </span>
        </td>
        <td style="text-align:center;">
            <span style="flex: 1;display: flex;flex-direction: column;">
                <span>4a</span>
                <span>     </span>
                <span>     </span>
            </span>
        </td>
</tr>

阅读 13

收藏
2024-12-09

共1个答案

小能豆

在这个问题中,你想使用 Selenium 提取 HTML 中的文本内容并将其存储到一个列表中。根据你提供的 HTML 结构,可以通过以下步骤来提取所有的文本内容,包括空白字符(如空格)。

首先,你需要找到所有 <span> 标签的内容,因为这些标签包含了你要提取的文本。可以使用 Selenium 的 find_elements 方法来获取这些元素并提取其文本。

这里有一个 Python 示例,使用 Selenium 提取并处理这些文本内容:

步骤:

  1. 初始化 Selenium WebDriver。
  2. 使用 find_elements 方法选择所有的 <span> 标签。
  3. 提取每个 <span> 元素的文本并将其存入一个列表。
  4. 对于空格的处理,可以使用 strip() 来忽略多余的空白。

Python 代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动浏览器
driver = webdriver.Chrome()

# 打开目标网页
driver.get('your_target_url')  # 请替换为你的目标 URL

# 查找所有的 <span> 元素
spans = driver.find_elements(By.TAG_NAME, 'span')

# 提取所有文本并存入列表
text_list = [span.text.strip() for span in spans]

# 打印结果
print(text_list)

# 关闭浏览器
driver.quit()

解释:

  1. driver.find_elements(By.TAG_NAME, 'span'):这个方法将返回页面上所有 <span> 标签的元素。
  2. span.text.strip()strip() 方法用于去掉元素文本两端的空格。这样可以确保如果有空白字符(如全角空格),它们会被正确处理。
  3. text_list 中将存储提取的所有文本,其中包括 "1a", "1b", "1c", "2a", 以及空白字符。

结果:

如果你的 HTML 内容和预期一致,输出将是类似以下的列表:

['1a', '1b', '1c', '2a', '', '', '3a', '3b', '3c', '4a', '', '']

进一步处理:

如果你希望将空字符串 '' 转换为空格 ' ' 或者其他处理方式,你可以在列表推导式中加入条件来进行过滤:

text_list = [span.text.strip() if span.text.strip() != '' else ' ' for span in spans]

这样,列表中的空白字符将被替换为一个空格 ' ',而不是空字符串 ''

希望这个示例对你有所帮助!

2024-12-09