Разбор HTML без добавления и удаления тегов - PullRequest
0 голосов
/ 06 ноября 2018

В Beautifulsoup при разборе HTML он пытается завершить HTML для вас, например:

HTML = """<!doctype html>
<html>
<body>
<img src='test'/>
<p
"""
from bs4 import BeautifulSoup
print BeautifulSoup(HTML, "html.parser")

Вывод этого будет:

<!DOCTYPE doctype html>

<html>
<body>
<img src="test"/>
    &lt;p
    </body></html>

Есть ли способ, которым я могу анализировать HTML как есть без редактирования каких-либо тегов или данных HTML (теги, <, > и т. Д.), Или есть альтернативный метод к разбору HTML "как есть"?

1 Ответ

0 голосов
/ 07 ноября 2018

номер

Смысл синтаксического анализа состоит в том, чтобы преобразовать исходный код HTML в модель документа (чтобы вы могли манипулировать им программно).

<p превращается в текстовый узел, содержащий <p, а теги <html> и <body> генерируют элементы HTML и BODY .

Затем выполняется любая манипуляция с моделью.

Затем в какой-то момент вы превращаете модель обратно в HTML. Это не (и не может, по крайней мере, не разумно) принимать во внимание исходный исходный код. Он экранирует специальные символы (например, <) в текстовых узлах и генерирует конечные теги для элементов, которые могут иметь конечные теги. Результатом является нормализованный документ.

...