【发布时间】: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 中它看起来像 </a> 出现在 </span> 之前,这让我认为 BeautifulSoup 看到这样的东西会自动关闭标签并在找到下一个 @987654330 @它也关闭了标题标签。
【问题讨论】:
标签: html python-3.x beautifulsoup