Может кто-нибудь подробнее рассказать о разнице между парсерами, такими как html.parser и html5lib?
Я наткнулся на странное поведение, когда при использовании html.parser он игнорирует все теги в определенном месте. посмотрите на этот код
from bs4 import BeautifulSoup
html = """
<html>
<head></head>
<body>
<!--[if lte IE 8]> <!-- data-module-name="test"--> <![endif]-->
<![endif]-->
<a href="test"></a>
<a href="test"></a>
<a href="test"></a>
<a href="test"></a>
<!--[if lte IE 8]>
<![endif]-->
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
tags = soup.find_all('a')
print(tags)
это вернет пустой список, тогда как при использовании html5lib нужные теги «a» возвращаются, как и ожидалось.
Кто-нибудь знает причину этого?
Я прочитал документацию, но объяснение различных парсеров довольно расплывчато ..
Также я заметил, что html5lib игнорирует недопустимые теги, такие как вложенные теги форм, есть ли способ использовать html5lib, чтобы избежать описанного выше поведения с html.parser, а также получать недопустимые теги, такие как вложенные теги форм? (при разборе html5lib один из тегов формы удаляется)
спасибо заранее.