Как извлечь данные из необработанного HTML-файла - PullRequest
1 голос
/ 30 ноября 2009

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

Ответы [ 5 ]

3 голосов
/ 30 ноября 2009

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

1 голос
/ 30 ноября 2009

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

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

1 голос
/ 30 ноября 2009

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

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

1 голос
/ 30 ноября 2009

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

0 голосов
/ 30 ноября 2009

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

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

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

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

...