LINUX.ORG.RU

Что нужно прочитать, чтобы понять, как правильно парсить HTML?

 


0

1

Не надо только шутить, что главное не регэкспами. Готовые библиотеки для парсинга мне тоже не подойдут (потому что их написал не я, а читать я не умею). Хотелось бы список документов, в которых этот HTML определяется формально. В смысле по-настоящему, со всеми дикими вариантами типа

<b><i>текст</b></i>
.

Тема, я понимаю, что большая, и что стандартов было много, и что стандарты не помогут, потому что в интернете tag soup, и что всё портит JavaScript и т.д.

Т.е. в идеале - вот полная грамматика, вот алгоритм для обработки грамматики (IELR?), то что напарсится обрабатывать при помощи такого-то механизма.

Ответ на: комментарий от i-rinat

Это только один из конкретных стандартов. А мне страницы попадаются с тегами

<pre><xmp></xmp></pre>
которые давно deprecated (так и написано: «Use pre and code instead»)

<center>

вообще не задокументирован с припиской:
Elements in the following list are entirely obsolete, and must not be used by authors

И наверняка ещё куча проблем есть, которые мне просто не встречались.

Einstok_Fair ★★ ()

потому что их написал не я, а читать я не умею

Где скачать вашу ОС, браузер и вот это все? Берите готовую либу.

<b><i>текст</b></i>

Не получится найти документацию, которая покрывает все варианты, потому что код страниц пишут люди, да зачастую (как вы и сказали) через js, так что там вообще каша может быть. Пытаясь своими руками все это предусмотреть - ну такое. При этом ради интереса можете пооткрывать "кривые" странички в браузере и увидеть что они отображаются, а потом там же открыть код страницы - и увидеть как браузер подсвечивает ошибки. То есть код страницы может быть и кривой, но страница все равно отобразится, потому что тут нет каких-то жестких стандартов, парсится все "как есть" и выводится что получилось. Если это какой-то академический проект - думаю такое поведение реализовать будет вполне нормально. Если хотите что-то реально работающее и приносящее пользу - берите либы, которые позволят работать с DOM.

micronekodesu ★★ ()