【发布时间】:2019-04-02 09:26:04
【问题描述】:
BeautifulSoup 没有正确提取我想要的 div。我不确定我做错了什么。这是html:
<div id='display'>
<div class='result'>
<div>text0 </p></div>
<div>text1</div>
<div>text2</div>
</div>
</div>
这是我的代码:
div = soup.find("div", {"class": "result"})
print(div)
我看到了这个:
<div class="result">
<div>text0 </div></div>
我期待的是这样的:
<div class="result">
<div>text0</div>
<div>text1</div>
<div>text2</div>
</div>
如果我删除 </p> 标记,这将按预期工作。换句话说,</p> 标签似乎让解析器崩溃了。
编辑:
这在 Python 2.7.12、beautifulsoup4 版本 4.5.1 上按预期工作。但不适用于 Python 3.6.4、beautifulsoup4 版本 4.7.1。不确定罪魁祸首是python版本还是bs4版本(更有可能)。
有人可以帮忙吗?
【问题讨论】:
-
为什么html中没有打开标签
<p>? -
这不是我的 html。我正在尝试抓取其他人编写的 html。我知道没有打开
<p>标签。但是 BeautifulSoup 应该只担心</div>不是吗?无论如何,有没有办法解决这个问题? -
只需将
div = soup.find("div", {"class": "result"})更改为div = soup.find_all("div", {"class": "result"})即可。 -
运行你的代码,我确实得到了你想要得到的东西。您的问题存在某种不完整/不一致之处。
-
你在 python3 上的 BeautifulSoup 版本是多少?
标签: beautifulsoup html-parsing