python - 网页抓取时的 <p> 和 <div> 顺序

标签 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>

最佳答案

您可能正在使用默认解析器(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 中了解有关不同解析器的更多信息

关于python - 网页抓取时的 <p> 和 <div> 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071595/

相关文章:

python - selenium python - 无法在表中找到隐藏元素

python - 漂亮的汤,使用 "findAll()"时完全匹配

python - BeautifulSoup select 函数在 Python3.5.2 和 Python3.4.2 之间的工作方式不同

python - 加速beautifulsoup

python - 使用 PyDrive 将图片上传到 Google Drive

Python Subprocess.Popen 不适用于跨平台 Yocto

Python的manage.py路径设置错误

python - 使用 beautifulsoup 提取没有类或 id 的元素

python - 抓取表仅返回 "tbody"而不是 tbody 的内容

python - Sklearn 如何使用 Joblib 或 Pickle 保存从管道和 GridSearchCV 创建的模型?