2011-01-05 2 views
3

Как учебное упражнение, я пишу веб-скребок в Common Lisp. (Грубый) план:Общий пакет Lisp для разбора недействительного HTML?

  1. Использование Quicklisp для управления зависимостями
  2. Используйте Drakma для загрузки страниц
  3. разбирает страницы с xmls

Я просто запустить в мертвую точку : веб-сайт, который я соскабливаю, не всегда производит действительный XHTML. Это означает, что шаг 3 (проанализировать страницы с xmls) не работает. И я не хочу использовать регулярные выражения как this guy :-)

Итак, может ли кто-нибудь порекомендовать общий пакет Lisp для разбора недействительного XHTML? Я представляю что-то похожее на HTML Agility Pack для .NET ...

ответ

10

Проект «закрыть-html» (доступен в Quicklisp) восстановится из фиктивного HTML и произведет что-то, с чем вы можете работать. Я использую clos-html вместе с CXML для обработки произвольных веб-страниц, и он работает хорошо. http://common-lisp.net/project/closure/closure-html/

+1

затворных HTML, кажется, не работает под GNU CLISP - но (не желая разжигайте святую войну), похоже, что переход на SBCL будет безболезненным. Я все еще чувствую, что нащупываю в пустыне Лиспа, но по крайней мере теперь я слышу голоса. Надеюсь, они не просто в моей голове :-) –

0

Дункан, до сих пор я был успешным использованием Clozure Common Lisp под как Ubuntu Linux и Windows, (7 & XP), так что если вы ищете для реализации, которая будет работать в любом месте вы могли бы попробовать это.

2

Для последующих посетителей: сегодня мы имеем Толстая: https://shinmera.github.io/plump

Plump является синтаксический анализатор для HTML/XML, как документы, сосредоточив внимание на том, снисходительно относятся к недопустимой разметкой. Он может обрабатывать такие вещи, как недействительные атрибуты, плохой порядок закрытия тегов, незарегистрированные объекты, недействительные типы тегов, самозакрывающиеся теги и т. Д. Он анализирует документы в представлении класса и предлагает небольшой набор функций DOM для управления им. Однако вы можете изменить его, чтобы анализировать свои собственные классы.

и их у нас есть другие LIBS запросить документ, как lquery (JQuery типа) или CLSS (простой CSS селекторов) того же автора.

Мы также теперь есть небольшой учебник по Common Lisp Cookbook: https://lispcookbook.github.io/cl-cookbook/web-scraping.html

Смотрите также Common Lisp вики: http://www.cliki.net/Web

+0

и теперь есть небольшой учебник: https://lispcookbook.github.io/cl-cookbook/web-scraping.html – Ehvince

Смежные вопросы