LINUX.ORG.RU

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

 


0

1

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

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

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

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

Тут, как мне кажется, два варианта:

  • не парсить, а работать через DOM, если это JS
  • заюзать perl5, если именно хочется парсить
Infra_HDC ★★★★★
()
Ответ на: комментарий от 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 ★★☆
() автор топика
Ответ на: комментарий от Einstok_Fair

<center> вообще не задокументирован

Задокументирован. Там написано, что должен сделать парсер, когда встретит этот тег.

i-rinat ★★★★★
()

Брать готовую либу и не мучатся. HTML довольно сложный.

RazrFalcon ★★★★★
()

как правильно парсить HTML?

парсером. и никак иначе.

mos ★★☆☆☆
()

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

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

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

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

micronekodesu ★★★
()
Ответ на: комментарий от Einstok_Fair

Это тебе ещё незакрытые теги не встречались - используй парсер, свой долго писать будешь.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.