Гадание HTML против обычного текста и ссылочного символа сущности в HTML
Ввод в виде текста
# Python 2.7
>>> bs4.BeautifulSoup("H&W Insurance")
<html><body><p>H&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&W Insurance</p>'
BeautifulSoup
а также lxml
правильно избежал моего ввода. Но как он догадался, что я набрал текст, а не HTML? Есть ли какой-то стандартный алгоритм для этого, он не кажется мне тривиальным.
Ввод в виде HTML
# Python 2.7
>>> bs4.BeautifulSoup("<html>H&W Insurance<html>")
<html><body><p>H&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&W Insurance</p></body></html>'
Почему &
превращается в &
, Разве это не может быть ссылка на сущность HTML &
символ на входе или имеет BeautifulSoup автоматически исправить это, потому что&W
не имеет никакого смысла в HTML, поэтому он должен быть &
?