Веб-скрапинг: обзор программы Goose Extractor

Дата публикации:

Привет всем читателям нашего блога. Сегодня мы вновь поговорим о скрапинге веб-сайтов.  Интерес к этой теме постоянно растет, и наша команда решила не оставаться в стороне от столь актуальной проблемы. В предложенной вашему вниманию статье речь пойдет о довольно известном open-source решении — программе Goose Extractor, написанной на языке программирования Python. Поехали.

Общая информация

Изначально Goose был написан на Java. Однако уже в августе 2011 его полностью конвертировали в Scala проект. Основные работы в open-source завершились еще в 2012 году.  Благодаря стараниям Хавьера Грангера (Xavier Grangier), Goose получил вторую жизнь на Python. Сообщество программистов довольно быстро включилось в разработку проекта и на сегодняшний день оригинальное решение имеет более трехсот активных форков. Команда JetRuby также оценила по достоинству преимущества этой библиотеки и, время от времени, занимается ее усовершенствованием.

Goose можно назвать многовекторным проектом. Его используют, как в качестве библиотеки, так и в форме отдельного приложения. Главная задача, которую решает Goose — это получение веб-страницы с дальнейшим извлечением данных самого широкого профиля. Имеется в виду текст, изображения, видео, мета-теги и т.д. Веб-скрапинг в самом чистом виде.

Согласно официальной документации, Goose пытается извлечь следующие типы данных:

  • Мета-теги
  • Мета-описание
  • Основной текст статьи и ее заголовок
  • Основное изображение статьи
  • Любые YouTube/Vimeo видеоролики, включенные в тело статьи.

Установка и использование

Код скрапера для веб-сайтов доступен на GitHub по ссылке https://github.com/grangier/python-goose. Для его установки (при обязательном условии наличия Python) предпринимаются следующие действия:

Goose готов к работе сразу же после установки. Кроме того, мы можем его “пощупать” из консоли Python:

В целом, код из коробки весьма функционален. Можно сказать, что он удовлетворяет большинство требований, предъявляемых к веб-скраперам. Наша команда сумела привнести в работу приложения несколько интересных новшеств. Например:

Полезный апдейт на случай, если вам нужно получить полный список опубликованных изображений


Апдейт, возвращающий нормализованный, чистый HTML код, готовый для репостинга.

Преимущества и недостатки

Мы используем Goose в самых, что называется боевых условиях, обрабатывая примерно полмиллиона ссылок в день. И это — заметьте — на проекте, который еще не вышел из бета-стадии. Из преимуществ скрапера можно выделить высокое качество контента и простоту применения. Коробочное решение не требует внесения изменений в большинстве случаев скрапинга стандартных сайтов. Согласитесь, это весьма удобно.

Открытый код всегда доступен для модернизации, а значит — расширяем под нужды конкретного заказчика. Единственная оговорка: для этого требуется знание Python и опыт разработки на других языках программирования (если вам нужно внести минорные изменения в код, к примеру — добавить регулярное выражение, справиться с поставленной задачей ресурсами Python не удастся при всем желании).

Теперь к недостаткам.

Использование библиотеки в промышленных масштабах выявило массу сложностей. Причем, наибольшее количество проблем коснулось самого, казалось бы, простого действия — HTTP запроса для извлечения и дальнейшей обработки контента.

Перед вами полный список сложностей, с которыми мы столкнулись на этом этапе работы:

  • Goose никак не отслеживает ошибки при запросах. Если что-то пошло не так, он просто возвращает пустой результат.
  • Скрапер имеет проблемы с распознаванием кодировки — если сервер не вернул кодировку в HTTP заголовке, Goose ее распознает неверно.
  • Возможность использовать «прокси» отсутствует.
  • Возможность ограничивать количество исходящих запросов также отсутствует. Это может привести к DDos атаке целевого сайта.
  • Goose умеет “читать” только статический HTML. Соответственно, коробочное решение не позволяет осуществлять скрапинг динамического контента. Как минимум, для этого потребуется многое дописывать или добавлять внешние модули. Как максимум — ничего не получится.

Следующим недостатком является отсутствие механизма назначения явных правил для некоторых доменов.

Как мы это решили?

Во-первых, мы убрали из Goose HTTP запросы и написали под это дело отдельный модуль, решающий все вышеуказанные проблемы.

Во-вторых, разработали систему правил для вытягивания контента из часто используемых сайтов. Новый сайт добавляется в систему без участия разработчика и всего в несколько кликов.

В результате Goose уже на входе получает готовый HTML контент и набор правил (если таковые имеются). Поверьте, это очень удобно. Кроме того, таким образом значительно повышается качество контента.

Вывод

Взвесив все за и против, мы можем смело назвать Goose Extractor хорошим проектом. Он заслуживает не только вашего внимания, но и самого активного использования в целях веб-скрапинга. Подводя итог, хочется сказать большое спасибо Хавьеру Грангеру за то, что он подарил сообществу Python (да и другим разработчикам) столь достойную вещь.

Мы Крым Диджитал

С 2015 года мы предоставляем полный цикл услуг мобильной и веб-разработки клиентам из различных отраслей и разных стран.

Подпишись
на наши новости

Контакты пресс-службы

+ 7 (926) 118-80-32

WhatsApp, Viber, Telegram

Давайте обсудим Ваш проект

или свяжитесь с нами по почте projects@crimeadigital.ru

Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных

Прошел день карьеры в СевГУ

Резидент технопарка, компания Крым Диджитал, приняла участие в Дне Карьеры в СевГУ, который прошел 17 мая. Мероприятие длилось 3 часа. Компанией заинтересовались  более 35 студентов, которым была важна информация о прохождении практики, бесплатные курсы Академии и вакансии, не требующие опыта работы. Руководитель разработки компании выступил с презентацией и ответил на все вопросы, которые так волнуют студентов — как начать свою карьеру в ИТ? Есть ли возможность совмещать учебу с работой? Кем я смогу стать? Как понять, кем я хочу работать? И многие другие.

Резидент технопарка, компания Крым Диджитал, приняла участие в Дне Карьеры в СевГУ, который прошел 17 мая.

Мероприятие длилось 3 часа. Компанией заинтересовались  более 35 студентов, которым была важна информация о прохождении практики, бесплатные курсы Академии и вакансии, не требующие опыта работы.

Руководитель разработки компании выступил с презентацией и ответил на все вопросы, которые так волнуют студентов - как начать свою карьеру в ИТ?

Есть ли возможность совмещать учебу с работой?

Кем я смогу стать?

Как понять, кем я хочу работать?

И многие другие.

Завершен набор студентов на летнюю практику

Крым Диджитал завершила набор студентов на летнюю практику. В июле придут 14 человек. Это студенты второго и третьего курсов кафедр Программная инженерия, Информатика и вычислительная техника, Информационные системы и технологии и Управление в технических системах. Все ребята будут ходить в офис и будут заняты реальным проектом, который они должны реализовать до конца практики. Каждый выбрал для себя то направление, в котором хотел бы развиваться — front-end и back-end-разработка, дизайн. Руководить практикой будет Head of Engineering.
Крым Диджитал завершила набор студентов на летнюю практику. В июле придут 14 человек. Это студенты второго и третьего курсов кафедр Программная инженерия, Информатика и вычислительная техника, Информационные системы и технологии и Управление в технических системах. Все ребята будут ходить в офис и будут заняты реальным проектом, который они должны реализовать до конца практики. Каждый выбрал для себя то направление, в котором хотел бы развиваться - front-end и back-end-разработка, дизайн. Руководить практикой будет Head of Engineering.

Крым Диджитал приняла участие в стратегической сессии

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня. Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства. Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня.

Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.
Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства.

Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Выпуск курса Software Testing

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing! Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании. Следующий курс намечен на август. Не пропусти анонс записи!

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing!

Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании.

Следующий курс намечен на август. Не пропусти анонс записи!