перейти к содержанию

Scrapy Cloud: как использовать, управлять и максимизировать выполнение Spider

Scrapy Cloud — это облачная платформа для парсинга, разработанная Zyte (ранее Scrapinghub), которая помогает развертывать, запускать и управлять пауками Scrapy в любом масштабе. В этом подробном руководстве я расскажу все, что вам нужно знать об использовании Scrapy Cloud для крупных проектов по парсингу веб-страниц.

Введение в Scrapy Cloud

Scrapy Cloud упрощает развертывание и эксплуатацию Scrapy-пауков, управляя базовой инфраструктурой за вас. Некоторые ключевые преимущества:

  • Никакого управления сервером — Scrapy Cloud берет на себя предоставление и настройку серверов.
  • Централизованный мониторинг: отслеживайте все свои задания по парсингу с единой информационной панели.
  • Простое масштабирование. Добавляйте больше серверов и ресурсов по мере необходимости для более высокого уровня параллелизма.
  • Планирование – автоматически запускайте повторяющиеся задания очистки.
  • Хранение данных – встроенное хранилище хранит очищенные данные в течение 7 дней.
  • Интеграция – экспорт очищенных данных в базы данных, API, файловое хранилище.

Более 2000 компаний по всему миру используют Scrapy Cloud для легкого управления крупномасштабными операциями по очистке веб-страниц.

Scrapy Cloud Архитектура

Scrapy Cloud использует архитектуру микросервисов для распределения заданий очистки по серверам и масштабирования использования ресурсов. Вот обзор:

  • Frontend – Предоставляет веб-интерфейс и API для управления проектами и запусками пауков.
  • Планировщик – Ставит задания в очередь и отправляет их на серверы с достаточной мощностью.
  • Рабочие – Пул серверов, который выполняет очистку пауков по указанию планировщика.
  • Шина сообщений – Управляет связью между планировщиком и работниками
  • Хранилище данных – Хранит найденные предметы и журналы во время и после пробега паука.
  • Услуги – Дополнительные микросервисы для уведомлений, выставления счетов, управления пользователями и т. д.

Это позволяет Scrapy Cloud легко масштабироваться за счет добавления дополнительных работников. Планировщик эффективно распределяет нагрузку.

В целях безопасности Scrapy Spiders помещают в изолированные контейнеры. Сетевой трафик маршрутизируется через прокси-серверы, чтобы предотвратить блокировку IP.

Настройка учетной записи Scrapy Cloud

Давайте пройдемся по шагам по созданию учетной записи Scrapy Cloud, настройке проекта и развертыванию паука:

  1. Перейдите на ScrapingHub.com и нажмите «Зарегистрироваться», чтобы создать учетную запись. Они предлагают бесплатный план.
  2. После регистрации создайте новый проект на странице «Проекты». Дайте ему уникальное имя.
  3. Установить shub инструмент командной строки:
pip install shub 
  1. Получите свой ключ API на странице настроек учетной записи и выполните аутентификацию:
shub login
Enter API key: <your_api_key>
  1. Разверните своего паука из папки проекта:
shub deploy <project_id>

Вот и все! Ваш паук теперь развернут в Scrapy Cloud. Далее мы рассмотрим, как его использовать и контролировать.

Планирование повторяющихся запусков пауков

Чтобы автоматизировать очистку, вы можете запланировать повторяющиеся запуски своих пауков через веб-интерфейс.

Перейдите на страницу «Периодические задания» и нажмите «Добавить периодическое задание». Вы можете настроить:

  • Интервал запуска – например, каждые 2 часа
  • Определенное время работы: ежедневно в 9:1, 6:XNUMX и XNUMX:XNUMX.

Планировщик запускает запуск паука по заданному расписанию. Вы можете управлять и просматривать результаты периодических заданий на одной странице.

Вот пример кода для запланировать паука через Scrapy Cloud API:

import scrapinghub

api = scrapinghub.ScrapinghubClient()
api.schedule(project_id, spider_name) 

Оптимизация производительности паука

Есть несколько методов, которые вы можете использовать для повышения скорости и эффективности парсинга при запуске пауков в Scrapy Cloud:

  • Увеличение параллелизма - Увеличить масштаб CONCURRENT_REQUESTS чтобы насытить ваши ресурсы
  • Включить gzip – Сжатые ответы повышают пропускную способность
  • Настройте конвейеры элементов – Сократить время обработки при экспорте данных
  • Используйте прокси – Альтернативные IP-адреса, чтобы избежать блокировок и банов.
  • Кэшировать ответы – Избегайте повторной очистки неизмененных страниц.
  • Мониторинг статистики – Следите за падением пропускной способности, указывающим на проблемы.

Вот пример сравнительного анализа различных CONCURRENT_REQUESTS значения на простом пауке:

совпадениеСтраниц/минПредметов/мин
104502250
259604800
5012006000
10012506200

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

Хранение, экспорт и интеграция данных

Scrapy Cloud предоставляет несколько вариантов работы со очищенными данными:

  • Встроенный хранения – По умолчанию хранит очищенные предметы в течение 7 дней.
  • Экспорт – Экспортируйте очищенные данные в CSV, JSON или XML.
  • Databases – Передавайте элементы в базы данных, такие как PostgreSQL, как часть ваших конвейеров.
  • Облачное хранилище – Экспортируйте очищенные данные в такие сервисы, как S3 или Google Cloud Storage.
  • Webhooks – Отправлять элементы во внешние API или пользовательские конечные точки.

Вот пример кода конвейера, экспортирующего данные в PostgreSQL:

import psycopg2 

class PostgreSQLPipeline(object):

  def open_spider(self, spider):
    self.connection = psycopg2.connect(DSN)
    self.cur = self.connection.cursor()

  def close_spider(self, spider):
    self.cur.close()
    self.connection.close()

  def process_item(self, item, spider):
    self.cur.execute("INSERT INTO items...")
    self.connection.commit()
    return item

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

Масштабирование работы Spider на Scrapy Cloud

Одним из основных преимуществ Scrapy Cloud является упрощенное масштабирование. Если вам требуется более высокий уровень параллелизма или пропускная способность, вы можете динамически добавлять больше серверов.

Например, масштабирование от 1 до 4 серверов обеспечит:

  • 4 ядра процессора
  • 4x ОЗУ
  • 4-кратная пропускная способность сети

Это позволяет запускать гораздо больше параллельных пауков для ускорения очистки. Линейное масштабирование серверов — простой способ увеличить производственные мощности.

Цены начинаются от 49 долларов США в месяц за 1 сервер в стартовом плане. План предприятия позволяет масштабировать до 60 серверов.

Сравнение Scrapy Cloud и самоуправляемого Scrapy

Для крупномасштабного парсинга веб-страниц вы также можете самостоятельно развернуть Scrapy непосредственно в облачной инфраструктуре. Как это соотносится с использованием управляемого решения, такого как Scrapy Cloud?

Плюсы самостоятельного управления:

  • Больше контроля — настраивайте серверы и Scrapy по своему усмотрению.
  • Экономия средств — отсутствие комиссий поставщиков и стандартные цены на облачные экземпляры.
  • Настройка — интегрируйте любые необходимые инструменты, такие как браузеры или прокси.

Минусы самостоятельного управления:

  • Затраты времени. Требуются экспертные знания для настройки и управления инфраструктурой.
  • Нет управляемого масштабирования – масштабирование вверх или вниз выполняется вручную.
  • Нет центральной платформы – нет единой информационной панели и журналов.
  • Нет поддержки. Вы несете ответственность за все операции и устранение неполадок.

Когда выбирать самоуправление?

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

Когда выбирать Scrapy Cloud?

Для большинства стандартных задач сканирования Scrapy Scrapy Cloud снижает накладные расходы на разработку. Их платформа занимается масштабированием и поддержкой парсинга.

Распространенные проблемы и способы их устранения

Вот некоторые распространенные проблемы, с которыми вы можете столкнуться при запуске пауков в Scrapy Cloud, и способы их устранения:

Ошибки HTTP - Включить RETRY_ENABLED и настроить RETRY_TIMES для повторения неудачных запросов. Определите, не работают ли определенные URL-адреса/домены.

Таймауты - Увеличивать DOWNLOAD_TIMEOUT если у пауков истекает время загрузки определенных страниц. Медленным веб-сайтам может потребоваться больший тайм-аут.

Запреты - Повернуть ROTATING_PROXY_LIST использовать прокси и избегать блокировки IP. Настроить DOWNLOAD_DELAY и CONCURRENT_REQUESTS чтобы выглядеть менее подозрительно.

Сбои развертывания – Дважды проверьте конфигурацию вашего проекта, если развертывание не удалось. Следите за журналами развертывания на предмет ошибок.

Сбор данных – Если не все данные очищаются, убедитесь, что у вас достаточно CLOSESPIDER_ITEMCOUNT и другие условия прекращения действия установлены надлежащим образом.

Перегрузка очереди заданий - Мелодия QUEUE_HARD_RATELIMIT и другие настройки, связанные с очередью, для сглаживания пропускной способности элементов и предотвращения саморегулирования.

Заключение

Scrapy Cloud предоставляет удобную платформу для развертывания и запуска Scrapy-пауков без проблем с инфраструктурой. Полезно для отдельных лиц и небольших команд, начинающих работу с веб-скрапингом. Однако для продвинутых случаев использования или компаний с инженерными ресурсами самоуправляемое развертывание Scrapy может обеспечить больший контроль и настройку. Обязательно оцените как управляемый, так и самостоятельный подходы при планировании массового парсинга веб-страниц.

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *