gpt4 book ai didi

python - beautifulsoup上下文中lxml和html5lib的区别

转载 作者:太空狗 更新时间:2023-10-30 00:50:43 26 4
gpt4 key购买 nike

在 beautifulsoup 的上下文中,lxml 和 html5lib 解析器的功能有区别吗?我正在尝试学习使用 BS4 并使用以下代码构造 --

ret = requests.get('http://www.olivegarden.com')
soup = BeautifulSoup(ret.text, 'html5lib')
for item in soup.find_all('a'):
print item['href']

我开始使用 lxml 作为解析器,但注意到对于某些网站,即使页面中存在有效链接,for 循环也永远不会被输入。同一页面适用于 html5ib 解析器。是否有任何特定类型的页面可能不适用于 lxml?

我在 Ubuntu 上使用 python-lxml 2.3.2-1 和 libxml2 2.7.8.dfsg-5.1ubunt和 html5lib-1.0b3

编辑:我更新到 lxml 3.1.2,但仍然看到同样的问题。在 Mac 上虽然运行 3.0.x,但同一页面被正确解析。有问题的网站是 www.olivegarden.com

最佳答案

html5lib 使用 HTML parsing algorithm如 HTML 规范中所定义,并在所有主要浏览器中实现。 lxml 使用 libxml2 的 HTML 解析器——这最终基于他们的 XML 解析器,并且不遵循任何其他地方使用的无效 HTML 的错误处理。

大多数 web 开发人员只使用 web 浏览器进行测试——标准该死——所以如果你想获得页面作者的意图,你可能需要使用与当前浏览器匹配的 html5lib 之类的东西,

关于python - beautifulsoup上下文中lxml和html5lib的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com