BeautifulSoup4:查找带有子标签的元素

时间:2016-04-20 05:45:07

标签: python tags beautifulsoup

我正在制作一个程序来抓取网页。

我需要在页面中找到trtd个孩子的所有class="table"元素

<tr>
    <td class="table">1</td>
    <td class="table">
        <a href="...">...</a>
    </td>
    <td class="table">18</td>
</tr>

我已设法找到所有tdclass=table元素

MySoup = soup.find_all("td", { "class" : "table" })

以及所有tr

MySoup = soup.find_all("tr")

但整个页面中有太多,这不完全是我所需要的......

1 个答案:

答案 0 :(得分:3)

  

我需要在页面中找到所有具有class =“table”

的td子元素的tr元素
soup.select('tr td.table')
  

如果你想要所有td是tr的直接孩子,那么使用

soup.select('tr > td.table')

示例:

>>> html = '''<tr>
    <td class="table">1</td>
    <td class="table">
        <a href="...">...</a>
    </td>
    <td class="table">18</td>
</tr><td class="table">19</td>'''
>>> soup = BeautifulSoup(html, 'lxml')
>>> soup.select('tr td.table')
[<td class="table">1</td>, <td class="table">\n<a href="...">...</a>\n</td>, <td class="table">18</td>]
>>>