Как определить различные типы данных внутри HTML-страницы?

#java #html #dom #web-crawler

#java #HTML #dom #веб-сканер

Вопрос:

Каков наилучший способ определения типов данных внутри html-страницы с использованием Java-средств DOM API, regexp и т.д.? Я хотел бы определять типы, подобные плагину skype, для номеров телефонов / skype, аналогичные для адресов, электронных писем, времени и т.д.

Комментарии:

1. Если вы хотите получить соответствующий ответ, вам нужно предоставить более подробную информацию о проблеме. Это произвольные веб-страницы или конкретные, структура которых вам известна? Правильно ли они сформированы? Находятся ли значения в хорошо известных местах на страницах или где угодно еще? Вас волнует, видны ли они пользователю? Это проблема обхода веб-страниц, или вы пытаетесь сделать это с помощью плагина для браузера? И вообще, что ты пытаешься сделать?

2. Привет, Стивен, это общая html-страница с различной структурой, таблицами, списками, элементами дизайна и т.д. Я хотел бы проверить только видимые пользователям элементы. Это проблема тестирования, черный ящик. Обход, вероятно, был бы лучшим вариантом, но я также могу рассмотреть плагин для браузера

Ответ №1:

«Типы» — неподходящий термин для того вида информации, на который вы ссылаетесь. Выбор DOM API или регулярного выражения зависит от структуры информации на странице.

Если вы знаете структуру (например, таблицы, используемые для отображения информации, вы уже знаете, в какой ячейке можно найти номер телефона, а в какой — адрес электронной почты), имеет смысл использовать DOM API.

В противном случае вам следует использовать regex для обычного HTML-текста без его синтаксического анализа.

Комментарии:

1. Не приходит ли DOM API в неистовство, если не находит соответствующий тег close? Вы не можете ожидать, что все страницы будут правильно сформированы.

2. @user это зависит от того, какую реализацию API вы используете. Существует множество таких зрелых реализаций, которые прекрасно обслуживают неправильно оформленные страницы. У меня был очень хороший опыт работы с анализатором cobra: lobobrowser.org/cobra.jsp

Ответ №2:

Я бы использовал регулярные выражения в следующем порядке:

  1. Извлекать только основное содержимое
  2. Удалите все теги, чтобы оставить только обычный текст
  3. Сопоставьте соответствующие шаблоны в тексте

Конечно, это предполагает, что разметка не предоставляет подсказок и что вы просто извлекаете данные, а не изменяете контекст страницы.

Надеюсь, это поможет,

Фил Лелло

Комментарии:

1. Эй, Фил, это действительно требует много работы. Более того, одна из проблем заключается в поиске соответствующих типов, потому что некоторые из них очень похожи, например, валюта, номер и номер телефона, что делает использование регулярных выражений очень сложным