Вопрос

Есть ли способ извлечь нужные данные из необработанного html, который был написан не семантически без идентификаторов и классов ? Я имею в виду, предположим, что есть сохраненный HTML-файл веб-страницы (профиля), и я хочу извлечь данные, например, «хобби». Можно ли сделать это с помощью PHP?

Это было полезно?

Решение

Используйте regex ! Я ребенок, я ребенок. Если вы знаете состояние одной и той же страницы, и формат гарантированно останется достаточно похожим, то вы можете попробовать написать ручной анализатор. Кроме того, существует множество библиотек, которые будут анализировать html. Я не достаточно знаком с PHP, чтобы рекомендовать его, но я уверен, что некоторые Google-технологии помогут вам в этом. Мне повезло с чистым анализатором HTML javascript Джона Ресига <. / р>

В конце концов, если вам нужна семантическая информация из html-страницы, которая не построена семантически, вы, вероятно, обречены программно, и ваша лучшая ставка может быть механический турок .

Другие советы

BeautifulSoup http://www.crummy.com/software/BeautifulSoup/ , возможно?

Похоже, вы ищете анализатор PHP DOM, например этот . Вероятно, будет немного сложно извлечь нужные данные, если HTML действительно лишен семантической структуры, но анализатор DOM - это то место, с которого нужно начинать.

Да, этот метод называется веб-очисткой . Вы можете использовать DOM, если это действительный HTML. Если страница генерируется динамически, генератор использовал бы некоторую структуру, и из моего опыта вы всегда можете выделить интересующие элементы.

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

В PHP есть два подхода. Первый - очистить документ с помощью расширения tidy , чтобы он был действительным XHTML и, следовательно, правильно сформированным XML, и, следовательно, может быть проанализирован с использованием инструментов XML.

Второй - использовать PHP-версию html5lib парсера, который пытается реализовать исследование HTML5 по текущим процедурам синтаксического анализа браузера. Если он отображается в браузере, html5lib может его проанализировать.

Используя любой из этих подходов, вы получите объект DOM, к которому можно обращаться с помощью выражений xpath. Поскольку в ваших теоретических документах отсутствует семантическая структура, вы захотите посмотреть на части документа из «5-го промежутка внутри 3-го р». склад ума.

Дополнительную информацию здесь (предупреждение о самостоятельной ссылке).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top