Общий пакет LISP для анализа неверного HTML? [закрыто
-
15-10-2019 - |
Вопрос
В качестве учебного упражнения я пишу веб -скребок в Common Lisp. (Грубый) план:
- Использовать QuickLisp управлять зависимостями
- Использовать Дракма загрузить страницы
- Просматривать страницы с XMLS
Я только что столкнулся с точкой прилипания: веб -сайт, который я соскребую, не всегда производит действительный xhtml. Это означает, что шаг 3 (анализ страниц с помощью XML) не работает. И я так же не хочу использовать регулярные выражения, как и этот парень :-)
Итак, может ли кто -нибудь порекомендовать общий пакет LISP для анализа неверного XHTML? Я представляю что -то похожее на HTML Agility Pack для .net ...
Решение
Проект «Закрытие-HTML» (доступный в QuickLisp) восстановится после фиктивного HTML и производит что-то, с чем вы можете работать. Я использую закрытие-HTML вместе с CXML для обработки произвольных веб-страниц, и это хорошо работает. http://common-lisp.net/project/clocure/closure-html/
Другие советы
Для следующих посетителей: сегодня у нас есть пухлый: https://shinmera.github.io/plump
Plump является анализатором для HTML/XML, похожих на документы, сосредоточившись на снисходительстве к недействительной разметке. Он может справиться с такими вещами, как неверные атрибуты, плохой порядок закрытия тегов, некодированные сущности, несуществующие типы тегов, самозакрывающие теги и так далее. Он анализирует документы к представлению класса и предлагает небольшой набор функций DOM, чтобы манипулировать им. Вы можете свободно изменить его, чтобы разобраться на собственных классах.
и у нас есть другие либера LQUERY (jquery-подобный) или CLSS (Простые селекторы CSS) тем же автором.
У нас также есть небольшой учебник по общей поваренной книге Lisp: https://lispcookbook.github.io/cl-cookbook/web-scraping.html
См. Также обыкновенный Lisp Wiki: http://www.cliki.net/web
Дункан, до сих пор я добился успеха, используя Clozure Common LISP под Ubuntu Linux и Windows (7 & XP), поэтому, если вы ищете реализацию, которая будет работать везде, вы можете попробовать это.