首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用selenium或漂亮的汤解析或刮取此HTML中的电子邮件

如何使用selenium或漂亮的汤解析或刮取此HTML中的电子邮件
EN

Stack Overflow用户
提问于 2022-09-20 12:39:56
回答 3查看 39关注 0票数 0

如何从这个div部分解析第二个a标记。当我尝试时,它总是从div孩子中选择第一个。我如何选择第二个,这样我就可以得到电子邮件。

代码语言:javascript
复制
<div class="col-md-4">
  Address:
  <div style="padding-left: 1em">
    Box 460
    <br />
    <a href="/canada/Clinton-Village.html"
      >100 Mile House, British Columbia V0K 2E0</a
    >
  </div>
  <br /><b>Enrollment:</b> 310<br />
  <b>Grade span:</b> K-7<br />
  <br /><b>School Type:</b> Standard School<br />
  <b>School Category:</b> Public School<br />
  <br /><b>Principal:</b> Mrs Donna Rodger<br />
  <b>Phone (verify before using):</b> (250) 395-2258<br />
  <b>Fax (verify before using):</b> (250) 395-3621<br />
  <b>E-mail:</b>

  <a href="mailto:donna.rodger@sd27.bc.ca">donna.rodger@sd27.bc.ca</a>
  <br />
</div>

我试过使用Xpath

代码语言:javascript
复制
        emailElement = email_driver.find_element(By.XPATH, '//*[@id="main_body"]/div[3]/div[1]/div[1]/div[1]/div[1]')
        result_email = emailElement.find_element(By.TAG_NAME, "a")
        print(result_email.text)

输出

100 Mile House, British Columbia V0K 2E0

它总是给我第一个标签。我想选择第二个标签

预期产出

donna.rodger@sd27.bc.ca

我想解析这一节

<a href="mailto:donna.rodger@sd27.bc.ca">donna.rodger@sd27.bc.ca</a>

EN

回答 3

Stack Overflow用户

发布于 2022-09-20 12:43:13

而不是

代码语言:javascript
复制
emailElement = email_driver.find_element(By.XPATH, '//*[@id="main_body"]/div[3]/div[1]/div[1]/div[1]/div[1]')
result_email = emailElement.find_element(By.TAG_NAME, "a")
print(result_email.text)

试试这个:

代码语言:javascript
复制
emailElement = email_driver.find_element(By.XPATH, '//*[@id="main_body"]/div[3]/div[1]/div[1]/div[1]/div[1]')
result_email = emailElement.find_element(By.XPATH, ".//a[contains(@href,'mailto')]")
print(result_email.text)

您还应该改进'//*[@id="main_body"]/div[3]/div[1]/div[1]/div[1]/div[1]' XPath表达式,但是我无法帮助您,因为您没有分享有关这方面的详细信息。

您还可能需要使用WebDriverWait预期的条件来等待元素的存在或可见性。

票数 1
EN

Stack Overflow用户

发布于 2022-09-20 13:26:46

有许多方法可以识别元素

选项1:查找包含电子邮件文本的标记,然后查找下一个同胞锚标记

代码语言:javascript
复制
print(email_driver.find_element(By.XPATH, "//b[text()='E-mail:']/following-sibling::a[1]").text)

选项2:查找包含电子邮件文本的标记,然后查找下一个锚标记

代码语言:javascript
复制
print(email_driver.find_element(By.XPATH, "//b[text()='E-mail:']/following::a[1]").text)

选项3:找到锚标记,开始使用() mailto

代码语言:javascript
复制
print(email_driver.find_element(By.XPATH, "//a[starts-with(@href,'mailto')]").text)

选项4:找到锚标记,href开始使用(在css选择器中) mailto

代码语言:javascript
复制
print(email_driver.find_element(By.CSS_SELECTOR, "a[href^='mailto']").text)
票数 1
EN

Stack Overflow用户

发布于 2022-09-20 12:45:45

尝试使用cssSelector/xpath而不是tagName。

代码语言:javascript
复制
cssSelector : By.cssSelector("a[href*='mailto:']")
or
xpath : By.xpath("//div[@class='col-md-4']/a[contains(@href,'mailto')]")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73786867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档