如何使用Beautiful Soup查找节点

时间:2013-07-12 10:50:58

标签: python html html-parsing beautifulsoup findall

我有一个HTML代码:

<table>
<tr>
   <td><table><tr><td>1</td></tr><tr><td>2</td></tr></table></td>
</tr>
<tr>
   <td><table><tr><td>3</td></tr><tr><td>4</td></tr></table></td>
</tr>
</table>

我想在第一张表中找到所有tr。 我通常使用

for tr in soup.findAll('tr'):

但是我将获得所有tr(主表和子表中的tr)。如何只在主表中获得tr?

1 个答案:

答案 0 :(得分:2)

这个怎么样?

from bs4 import BeautifulSoup

soup = BeautifulSoup("""
<table>
<tr>
   <td><table><tr><td>1</td></tr><tr><td>2</td></tr></table></td>
</tr>
<tr>
   <td><table><tr><td>3</td></tr><tr><td>4</td></tr></table></td>
</tr>
</table>
""")

for tr in soup.find('table').find_all('tr', recursive=False):
    print tr

recursive=False有助于仅查找顶级代码(请参阅docs)。