#python #html #web-crawler
#python #HTML #веб-сканер
Вопрос:
Мне нужно создать веб-сканер для извлечения информации с веб-страниц. Я провел исследование и обнаружил, что Beautiful Soup был превосходным, поскольку я мог анализировать весь документ и создавать dom-объекты и выполнять итерации, извлекать атрибуты и т.д. (аналогично jQuery).
Но я использую Python 3.2, и для него нет стабильной версии (я думаю, что ее вообще нет, только 3.1, который я видел на их домашней странице).
Итак, мне нужны такие же хорошие альтернативы.
Ответ №1:
Мне кажется, что существует версия beautiful soup версии 3.2.0, выпущенная почти год назад. Есть также HTMLParser http://docs.python.org/library/htmlparser.html
Комментарии:
1. Я только что попробовал Beautiful Soup 3.2.0. установка выдает мне синтаксическую ошибку в инструкции: напечатать «Модульные тесты завершились неудачей!». Это старая инструкция print из 2.x как вы можете сказать мне, что это нормально для 3.2?
2. Сообщите об ошибке (с обратным отслеживанием) в группу поддержки BS , как они и просили. Они довольно полезны, дайте им шанс исправить это, прежде чем вы начнете публиковать здесь, что это не работает. (Если об этом вы уже не сообщали)
Ответ №2:
Я думаю, что последняя версия — 4.1.1, вы можете прочитать об этом здесь Документация BS4
Я уже некоторое время использую BS4 с PHP на своем веб-сайте для этой цели с отличными результатами. Мне пришлось переключиться обратно на BSv3 из-за проблемы несовместимости PHP / Python, но это не зависит от того, насколько хорошо работает скрипт BS4 сам по себе.
Изначально я использовал встроенный механизм синтаксического анализа HTML, но обнаружил, что это медленно. После установки движка LMXL на моем веб-сервере значительно увеличилась скорость! Никаких заметных улучшений в фактическом синтаксическом анализе, но скорость резко возросла.
Я бы попробовал — я рекомендую это, и я перепробовал много разных вариантов, прежде чем остановился на красивом супе.
Удачи!
Ответ №3:
С домашней страницы lxml:
Последняя версия работает со всеми версиями CPython от 2.4 до 3.2.
Комментарии:
1. Я только что прочитал, что серия Beautiful Soup 3.1 работает с Python 3.0, и все (нет упоминания о 3.2). И в версиях 3.x используется HTMLParser, поскольку SGMLParser (который намного лучше) был удален :/. И от автора больше нет поддержки.
2. @Jirico: Вот почему я рекомендую использовать lxml.
3. lxml выглядит не так привлекательно, как Beautiful Soup, но я посмотрю на него. Спасибо! Хм, я думаю, что я получу Python 2.7, у меня будет больше поддержки от третьих сторон…
Ответ №4:
Самой прямой и лучшей альтернативой BeautifulSoup является Mechanize.
Механизация — ваш спаситель, если вам нужно автоматизировать простую функциональность веб-страницы, такую как отправка формы (с информацией, которой у вас не было заранее, например, токенами CSRF). Он даже доступен на нескольких языках программирования!
Тем не менее, ответ Свена правильный: я люблю lxml, когда мне просто нужно извлечь информацию из HTML.
Комментарии:
1. Я публикую этот ответ, потому что только сегодня я задавался вопросом: «О, что это была за библиотека, которая настолько превосходила BS, что я пришел в ярость, что кто-нибудь все еще использовал BS?» и я забыл, что Mechanize также предназначен для Python. Поэтому я думаю, что стоит повторить!