Анализ HTML с помощью Python 2.7 - HTMLParser, SGMLParser или Beautiful Soup?
Я хочу сделать скриншоты с помощью Python 2.7, и у меня нет контекста различий между HTMLParser
, SGMLParser
или Beautiful Soup.
Все ли они пытаются решить ту же проблему или существуют они по разным причинам? Самый простой, наиболее надежный и который (если есть) является выбором по умолчанию?
Также, пожалуйста, дайте мне знать, если я упустил важный вариант.
Изменить: Я должен упомянуть, что я не особенно разбираюсь в разборе HTML, и меня особенно интересует, что заставит меня двигаться быстрее, с целью разбора HTML на одном конкретном сайт.
Ответы
Ответ 1
Я использую и рекомендую lxml и pyquery для разбора HTML. Мне приходилось писать ботовую программу для веб-поиска несколько месяцев назад и всех популярных альтернатив, которые я пробовал, включая HTMLParser и BeautifulSoup. Я пошел с lxml и синтаксический сахар pyquery. Я не пробовал SGMLParser, хотя.
Для того, что я видел, lxml является более или менее самой многофункциональной библиотекой, а ее базовое ядро C является довольно эффективным по сравнению с его альтернативами. Что касается pyquery, мне очень понравился его синтаксис, вдохновленный jQuery, который делает навигацию по DOM более приятной.
Вот некоторые ресурсы, которые могут оказаться полезными, если вы решите попробовать:
Хорошо, что мой 2c:) Надеюсь, это поможет.
Ответ 2
BeautifulSoup, в частности, предназначен для грязного HTML, найденного в дикой природе. Он будет разбирать любую старую вещь, но медленно.
В наши дни очень популярным выбором является lxml.html, который работает быстро, и при необходимости можно использовать BeautifulSoup.
Ответ 3
Взгляните на Scrapy. Это фреймворк python, специально предназначенный для утилизации. Это позволяет легко извлекать информацию с помощью XPath. Он также имеет некоторые очень интересные возможности, такие как определение моделей для скремблированных данных (возможность экспорта в разных форматах), аутентификация и рекурсивные ссылки.
Ответ 4
Ну, программное обеспечение похоже на автомобили.... разные вкусы обо всех делаю!
Перейдите с помощью BeautifulSoup (4).