查找具有特定 child 和 BeautifulSoup 的元素

Find elements which have a specific child with BeautifulSoup

使用 BeautifulSoup,如何访问具有特定 div 作为 child 的 <li>

示例:如何访问 li 的文本(即 info@blah.com),其中 Email 为 child div?

<li>
  <div>Country</div>
  Germany
</li>
<li>
  <div>Email</div>
  info@blah.com
</li>

我尝试手动执行:循环所有 li,并针对每个循环重新循环所有 child div 以检查文本是否电子邮件等,但我确信存在一个更聪明的版本 BeautifulSoup.

有多种方法可以解决这个问题。

一种选择是通过文本定位Emaildiv并得到next sibling:

soup.find("div", text="Email").next_sibling.strip()  # prints "info@blah.com"

您的问题是关于在 <div> 标签内获取 "Email" 的整个 <li> 部分,对吗?这意味着您需要获得以下结果,

 <li>
  <div>Email</div>
  info@blah.com
 </li>

如果我理解你的问题正确意味着你需要做以下事情。

soup.find("div", text="Email").parent

或者如果您需要 "info@blah.com" 作为结果,您需要执行以下操作。

soup.find("div", text="Email").next_sibling

如果你只有一个div有内容"Email",你可以这样做

soup.find("div", text="Email").find_parent('li')