【问题标题】:BeautifulSoup4 tag content not showingBeautifulSoup4 标签内容未显示
【发布时间】:2020-12-26 20:23:15
【问题描述】:

我试图从网站上抓取一些数据,发现 BeautifulSoup4 没有像我预期的那样显示全部内容。在下面的第一个示例中,一切正常。在找到带有“title”类的标签后,它显示它在内容中有两个元素(NavigableText:Bag of Hold 和 Span 标签)。

<h1 class="title">
    Bag of Holding
    <span style="float:right;">
        Item 4+
    </span>
</h1>

不幸的是,在第二种情况下,找到标题的方式与它返回只有 1 个元素的内容的方式相同,我希望有 3 个元素。我希望内容包含“a”标签、文本和跨度,但似乎它只有“a”标签。这使得进入 NavigableText 变得非常困难,因为它只能作为“img”的“下一个”元素访问。

<h1 class="title">
    <a href="PFS.aspx">
        <span style="float:left;">
            <img alt="PFS Standard" title="PFS Standard" style="height:25px; padding:2px 10px 0px 2px" src="Images\Icons\PFS_Standard.png">
        </span>
    </a>
    Adventurer's Pack
    <span style="float:right;">
        Item 0
    </span>
</h1>

我是否遗漏了一些明显的东西,这会使从标题中获取字符串并在两种情况下遵循 span 一致?

编辑: 我发现问题出在解析 html 响应的某个地方,因为它将第二个示例中的响应更改为:

<h1 class="title">
    <a href="PFS.aspx">
        <span style="float:left;">
            <img alt="PFS Standard" src="Images\Icons\PFS_Standard.png" style="height:25px; padding:2px 10px 0px 2px" title="PFS Standard"/>
        </span>
    </a>
</h1>
</span>
Adventurer's Pack
<span style="float:right;">
    Item 0
</span>

这似乎是由返回的 html 引起的,即使在原始 html 中它看起来像 &lt;/a&gt; 出现在 &lt;/span&gt; 之前,这让我认为 BeautifulSoup 看到这样的东西会自动关闭标签并在找到下一个 @987654330 @它也关闭了标题标签。

【问题讨论】:

    标签: html python-3.x beautifulsoup


    【解决方案1】:

    确实问题出在糟糕的 html 响应中。 &lt;a&gt; 标签在嵌套的 &lt;span&gt; 标签之前关闭,这导致默认 html.parser 出现问题。我通过使用带有 BeautifulSoup (BeautifulSoup(page.text, 'html5lib')) 的 html5lib 解析器来修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多