【问题标题】:BeautifulSoup4: Find elements with children tagsBeautifulSoup4:查找带有子标签的元素
【发布时间】:2016-04-20 05:45:06
【问题描述】:

我正在构建一个抓取网页的程序。

我需要在具有td 子级和class="table" 的页面中找到所有tr 元素

<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")

但是整个页面太多了,反正这不是我需要的……

【问题讨论】:

    标签: python tags beautifulsoup


    【解决方案1】:

    我需要在页面中找到所有 tr 元素的 td 子元素为 class="table"

    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>]
    >>> 
    

    【讨论】:

    • soup.select('tr td.table') 没有进行选择,因为我在结果中看到了整个源(不仅仅是trwith children td)。
    • 因为整个源代码都存在于 tr 中。
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2011-01-26
    • 2021-09-01
    • 2015-11-10
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多