网络抓取时<p>和<div>的顺序

时间:2019-09-24 00:21:47

标签: python web-scraping beautifulsoup

我在抓取在<div>标签内嵌入<p>标签的网页时遇到了困难。当我找到一个div时,输出以下一个</p>结尾,而不是继续到</div>。并且输出似乎已将</p>从源代码转换为。我尝试使用其他包含性的div标签,但我的输出始终在所需文本之前结束。

HTML源代码

<p><div class="asdf">Text</p>
<p>More Text</p></div>

Python代码

print(soup.find(class_="asdf"))

输出

output = <div class="asdf">Text</div>

所需的输出

<div class="asdf">Text</p><p>More Text</p></div>

1 个答案:

答案 0 :(得分:0)

您可能正在使用默认解析器(Python内置的html.parser),它对于格式错误的HTML代码不是很好:

>>> BeautifulSoup("<div>Foo</p>Bar</div>", "html.parser").find("div")
<div>Foo</div>

尝试安装lxmlhtml5lib并改用它:

pip install html5lib

然后:

>>> BeautifulSoup("<div>Foo</p>Bar</div>", "html5lib").find("div")
<div>Foo<p></p>Bar</div>

the documentation中了解有关不同解析器的更多信息