代码之家  ›  专栏  ›  技术社区  ›  bsb_coffee

如何在Beautiful Soup中获取嵌套元素

  •  28
  • bsb_coffee  · 技术社区  · 17 年前

    我正在努力掌握一些所需的语法 hrefs <td> . <table> , <tr> <td> 元素没有任何类或id。

    <tr>
        <td><a>...
    

    谢谢。

    2 回复  |  直到 3 年前
        1
  •  32
  •   Alex Martelli    17 年前

    import BeautifulSoup
    html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>"
    soup = BeautifulSoup.BeautifulSoup(html)
    

    然后在其中搜索,例如 <a> <td> :

    for ana in soup.findAll('a'):
      if ana.parent.name == 'td':
        print ana["href"]
    
        2
  •  29
  •   Thierry Lathuille    9 年前

    from BeautifulSoup import BeautifulSoup
    soup = BeautifulSoup(html)
    anchors = [td.find('a') for td in soup.findAll('td')]
    

    这应该会在您提供的html中的每个“td”内找到第一个“a”。你可以调整 td.find 更具体或使用 findAll 如果你在每个td中都有几个链接。

    None 在列表中,则可以修改列表理解:

    from BeautifulSoup import BeautifulSoup
    soup = BeautifulSoup(html)
    anchors = [a for a in (td.find('a') for td in soup.findAll('td')) if a]
    

    td.find('a') .