Разбор грязного HTML на iPhone - PullRequest
2 голосов
/ 09 января 2010

Я уже долго искал хорошее решение, но не могу найти ничего, что соответствует моим потребностям ...

Я хочу проанализировать файл HTML и отобразить его содержимое в таблице. Все почти как написание еще одного читателя RSS. Делать это, анализируя действительные XML-файлы, просто и понятно, используя NSXMLParser или TouchXML или libxml напрямую или какой-то другой XML-анализатор ... Но эти фреймворки либо работают только с XML и / или не работают с не аккуратным HTML. Сайт состоит из элементов div, включающих ссылки, которые включают изображения или абзацы, включая ссылки, изображения и т. Д., И т. Д. - просто обычный веб-сайт. Использование libxml в этом случае кажется слишком сложным.

Есть ли у кого-то больше опыта разбора грязных HTML-страниц? Какую (бесплатную) библиотеку / фреймворк вы использовали? У меня такое ощущение, что я просто здесь что-то упускаю. Разве не так сложно разобрать HTML-файлы или нет?

Я надеюсь, что вы можете указать мне правильное направление!

Ответы [ 5 ]

1 голос
/ 09 января 2010

Я должен был сделать это некоторое время назад. В конце концов я использовал HTML Tidy для очистки HTML перед его анализом с помощью TouchXML.

Когда я делал это, документы HTML Tidy были не очень ясными (IMHO), поэтому мне пришлось немного покопаться, чтобы выяснить, как это на самом деле работает. Если сейчас не так много времени, но я могу посмотреть код, который придумал, если хотите.

Источник (и более) HTML Tidy можно найти здесь. http://tidy.sourceforge.net/

1 голос
/ 09 января 2010

Если вам нужно проанализировать большую часть страницы, попытка использовать libXML2 согласно Anurag - хорошая идея.

Если вам просто нужны небольшие сегменты данных из файла, вам лучше использовать выражения RegEx для считывания данных - есть также встроенная библиотека регулярных выражений, которую вы можете использовать оболочкой RegExKitLite для доступ.

1 голос
/ 09 января 2010

WebKit должен обрабатывать грязный HTML и позволяет вам получить доступ к дереву DOM, используя классы "Page" и "Frame". Они содержат функции для поиска элементов по идентификатору и т. Д.

1 голос
/ 09 января 2010

Проверьте библиотеку libxml2, которая также есть на iPhone и поставляется со встроенным HTML-парсером . Претензии для обработки в реальном мире HTML:

этот модуль реализует не проверяющий парсер HTML 4.0 с API, совместимым с синтаксическим анализатором XML. Он должен уметь анализировать HTML «реального мира», даже если он серьезно нарушен с точки зрения спецификации.
0 голосов
/ 09 января 2010

У меня нет опыта, но ... Разве вы не можете использовать парсер WebKit? Я предполагаю, что это должно показать какую-то DOM без необходимости рендеринга страницы.

...