Гадание HTML против обычного текста и ссылочного символа сущности в HTML

Ввод в виде текста

# Python 2.7
>>> bs4.BeautifulSoup("H&W Insurance")
<html><body><p>H&amp;W Insurance</p></body></html>

# Python 3.5.2
>>> import lxml.html
>>> h = lxml.html.fromstring("H&W Insurance")
>>> lxml.html.tostring(h)
b'<p>H&amp;W Insurance</p>'

BeautifulSoup а также lxml правильно избежал моего ввода. Но как он догадался, что я набрал текст, а не HTML? Есть ли какой-то стандартный алгоритм для этого, он не кажется мне тривиальным.

Ввод в виде HTML

# Python 2.7
>>> bs4.BeautifulSoup("<html>H&W Insurance<html>")
<html><body><p>H&amp;W Insurance</p></body></html>

# Python 3.5.2
>>> h = lxml.html.fromstring("<html>H&W Insurance</html>")
>>> lxml.html.tostring(h)
b'<html><body><p>H&amp;W Insurance</p></body></html>'

Почему & превращается в &amp;, Разве это не может быть ссылка на сущность HTML & символ на входе или имеет BeautifulSoup автоматически исправить это, потому что&W не имеет никакого смысла в HTML, поэтому он должен быть &amp;?

0 ответов

Другие вопросы по тегам