【问题标题】:Beautifulsoup: how to getting elements between other elementsBeautifulsoup:如何在其他元素之间获取元素
【发布时间】:2011-07-23 08:15:08
【问题描述】:

html:

<h2>...</h2>
<p>...</p>
<p>...</p>
<p>...</p>
<h2>...</h2>
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>

预期结果:

<p>...</p>
<p>...</p>
<p>...</p>

我的意思是,获取 h2 元素之间的所有内容

【问题讨论】:

    标签: python beautifulsoup web-scraping


    【解决方案1】:

    每个元素都有一个nextSibling method,因此您可以只获取第一个 h2 元素,然后遍历下一个兄弟元素,直到找到第二个元素。

    伪代码(假设 firstElem 是 h2 元素):

    p_tags = []
    next = firstElem.nextSilbing
    while next.name != "h2":
      p_tags.append(next)
      next = next.nextSibling
    

    【讨论】:

    • 有错别字,完整的代码示例会更有用。
    【解决方案2】:

    您也可以使用soup.h2.findNextSiblings('p'),其中soup 是您的BeautifulSoup 实例。

    【讨论】:

    • 这个解决方案提供了h2之后的所有元素,而不是h2标记之间。
    • 对,这就是 OP 要求的 - 第一个 &lt;h2&gt;...&lt;/h2&gt; 元素和第二个 &lt;h2&gt;&lt;/h2&gt; 元素之间 的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2015-10-02
    • 2018-11-19
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多