«LXML» или как парсить HTML с лёгкостью
Описание библиотеки
«lxml» — это библиотека для парсинга, основанная на библиотеках C (Си) libxml2 и libxslt. Она обладает хорошей скоростью работы и простотой использования. Данная библиотека предоставляет «питонический» API и очень схожа на «ElementTree» API.
«lxml» обладает большими плюсами:
- Соответствие стандартам XML
- Поддержка невалидного HTML-кода
- Активная поддержка библиотек экспертами
- Скорость
- Многофункциональность
- Безопасность (нет проблем с памятью)
Единственный минус — данную библиотеку нельзя использовать в «GAE» и в других местах, где используют встроенный python.
Скачать последнюю (2.3) на текущий момент версию можно здесь.
Официальную документацию в PDF-формате можно почитать здесь.
Примеры
Примеры — лучшее средство для изучения чего-либо нового, по-этому я приготовил несколько примеров с подробными комментариями.
Для начала попробуем получить содержимое каких-то HTML-тегов c помощью XPath:
Получить XPath может помочь «Firebug».
Теперь попробуем что-то более полезное! Выбирем все названия топиков на главной странице «Хабрахабра», но для этого попробуем применить CSS-селекторы:
Здесь с помощью метода «cssselect» мы выбрали названия топиков на Хабре.
В отличии от «Beautiful Soup» в «lxml» с кириллицей проблем нет.
Получить значение аттрибута очень просто:
Как видите библиотека очень проста в использовании. Создать парсер любого сайта можно за несколько секунд!
Заключение
Библиотека «lxml» выше всех похвал! Работать с этой библиотекой — это одно удовольствие.
Библиотека предоставляет удобные методы для парсинга любой сложности. Библиотека работает как с XML, так и с невалидным HTML-кодом. Обладает удобной документацией и множеством примеров.
По моему мнению, библиотека «lxml» — лучшая библиотека для парсинга в Python.
Спасибо пользователю dmzkrsk за дополнение.
комментарии (20)