You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定位div中第二个a标签提取邮箱?Selenium/Beautiful Soup方案

解决办法:提取指定div下第二个标签的邮箱

假设目标HTML结构如下(根据需求还原)

<div class="target-div">
  <a href="/address">123 School Road</a>
  <a href="mailto:donna.rodger@sd27.bc.ca">donna.rodger@sd27.bc.ca</a>
</div>

Selenium 解决方案

方法1:用XPath索引定位第二个标签

你之前的XPath未正确指定位置,XPath索引从1开始,直接定位目标div下的第二个即可:

from selenium.webdriver.common.by import By

# 定位目标div下的第二个<a>标签
email_element = driver.find_element(By.XPATH, "//div[@class='target-div']/a[2]")
email = email_element.text

如果目标div有其他特征(比如id),替换@class='target-div'为对应属性即可。

方法2:通过mailto属性筛选(更可靠)

邮箱链接通常带mailto:前缀,直接筛选这类链接能避免页面元素顺序变动导致的错误:

email_element = driver.find_element(By.XPATH, "//div[@class='target-div']/a[contains(@href, 'mailto:')]")
# 两种方式提取邮箱:取文本或从href中剥离前缀
email = email_element.text
# 或者 email = email_element.get_attribute('href').replace('mailto:', '')

Beautiful Soup 解决方案

先确保安装bs4库,再按以下步骤解析:

from bs4 import BeautifulSoup

# 假设html是你获取到的页面源码
html = """
<div class="target-div">
  <a href="/address">123 School Road</a>
  <a href="mailto:donna.rodger@sd27.bc.ca">donna.rodger@sd27.bc.ca</a>
</div>
"""

soup = BeautifulSoup(html, 'html.parser')
# 方法1:取目标div下的第二个<a>标签(Python列表索引从0开始)
target_div = soup.find('div', class_='target-div')
email_a = target_div.find_all('a')[1]
email = email_a.text

# 方法2:筛选带mailto的<a>标签(更稳妥)
email_a = target_div.find('a', href=lambda x: x and 'mailto:' in x)
email = email_a.text

内容的提问来源于stack exchange,提问作者Keen Alia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:35:23