Python 使用BeautifulSoup查找具有特定子级的元素

Python 使用BeautifulSoup查找具有特定子级的元素,python,beautifulsoup,html-parsing,Python,Beautifulsoup,Html Parsing,使用BeautifulSoup,如何访问子级具有特定div的 示例:如何访问文本(即。info@blah.com)在li中,哪个Email作为子div <li> <div>Country</div> Germany </li> <li> <div>Email</div> info@blah.com </li> 国家 德国 电子邮件 info@blah.com 我试着手动操作

使用BeautifulSoup,如何访问子级具有特定div的
  • 示例:如何访问文本(即。info@blah.com)在
    li
    中,哪个
    Email
    作为子div

    <li>
      <div>Country</div>
      Germany
    </li>
    <li>
      <div>Email</div>
      info@blah.com
    </li>
    
  • 国家 德国
  • 电子邮件 info@blah.com

  • 我试着手动操作:在所有
    li
    上循环,对每一个循环,在所有child
    div
    上重新循环,检查文本是否是电子邮件,等等。但我确信有一个更聪明的版本使用BeautifulSoup。

    有多种方法来解决这个问题

    一个选项是通过文本定位
    电子邮件
    div并获取:


    您的问题是关于获取整个
  • 部分,该部分在
    标记中包含“Email”,对吗?意味着你需要得到以下结果

     <li>
      <div>Email</div>
      info@blah.com
     </li>
    
    或者如果你需要”info@blah.com“因此,您需要执行以下操作

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

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

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