我在抓取嵌入 <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>
最佳答案
您可能正在使用默认解析器(Python 的内置 html.parser
),该解析器不太适合处理格式错误的 HTML 代码:
>>> BeautifulSoup("<div>Foo</p>Bar</div>", "html.parser").find("div")
<div>Foo</div>
尝试安装 lxml
或 html5lib
并使用它:
pip install html5lib
然后:
>>> BeautifulSoup("<div>Foo</p>Bar</div>", "html5lib").find("div")
<div>Foo<p></p>Bar</div>
在 the documentation 中了解有关不同解析器的更多信息
关于python - 网页抓取时的 <p> 和 <div> 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071595/