Скрапид: пошаговое руководство
Независимо от того, работаете ли вы с большими объемами данных или ищете более простой способ управлять несколькими пауками, Scrapyd упрощает процесс и помогает поддерживать стабильную работу.
Что такое Scrapyd?
Scrapyd — это инструмент для развертывания и управления пауками Scrapy на сервере. Вы можете удаленно управлять всем через простые API-вызовы. Сервер Scrapyd работает как фоновый сервис, автоматически обрабатывая запросы на обход и выполняя их без ручного вмешательства.
С Scrapyd вы можете:
- Развертывайте и управляйте своими Scrapy управлять проектом удаленно без труда.
- Управляйте всеми своими задачами скрейпинга через Единый JSON API.
- Отслеживайте и управляйте своими спайдерами с помощью удобного веб-интерфейса.
- Масштабируйте сбор данных, запуская пауков на нескольких серверах.
- Улучшите производительность сервера, изменив количество одновременно работающих спайдеров.
- Автоматизируйте задачи с помощью таких инструментов, как Celery и Gerapy.
- Integrate Scrapy на Python фреймворки вроде Django для улучшения веб-приложений.
Теперь давайте разберёмся, как развернуть ваши спайдеры Scrapy с помощью Scrapyd.
Альтернативное решение — API и инструменты для веб-скрейпинга
Если вашему проекту нужен скрапинг в больших масштабах и вы не хотите возиться с прокси и Сервисы для решения CAPTCHA, вы можете выбрать один из лучшие API и инструменты для веб-скрапинга. Ниже я перечислил топ-5 инструментов для веб-скрапинга.
- Яркие данные — Best overall for advanced scraping; features extensive proxy management and reliable APIs.
- Octoparse - удобный no-code-инструмент для автоматического извлечения данных с сайтов.
- ScrapingBee — API для разработчиков, эффективно работающее с прокси, браузерами и CAPTCHA.
- Scrapy — Python-фреймворк с открытым исходным кодом, отлично подходящий для обхода антибот-защиты и веб-скрейпинга.
- ScraperAPI — Handles tough scrapes with advanced anti-bot technologies; great for developers.
Я не связан ни с одним из упомянутых поставщиков, просто у меня был хороший опыт их использования.
Как запускать спайдеры Scrapy с помощью Scrapyd
Пререквизиты
Убедитесь, что в системе установлен Python 3+. Вам потребуется установить Scrapy, Scrapyd и Scrapyd-client через pip.
pip install scrapyd scrapy scrapyd-client
Настройка проекта Scrapy
Создайте проект Scrapy: Use the command scrapy startproject <PROJECT_NAME> to create a Scrapy project.
Создание спайдера: In the spiders folder, create a scraper.py file with the following basic spider:
from scrapy.spiders импорт Spider
класс MySpider(Spider):
name = 'product_scraper'
start_urls = ['https://www.scrapingcourse.com/ecommerce/']
def parse(self, response):
products = response.css('ul.products li.product')
data = []
для продукт в products:
product_name = product.css('h2.woocommerce-loop-product__title::text').получить()
price = product.css('bdi::text').получить()
data.append({'product_name': product_name, 'цена': price})
self.log(data)
Test Your Spider: Проверьте спайдера локально, запустив:
scrapy crawl product_scraper
Это должно извлекать и логировать названия и цены товаров со страницы интернет-магазина.
Развертывание пауков в Scrapyd
Запустите сервер Scrapyd: Выполните команду ниже, чтобы запустить сервер Scrapyd:
scrapyd
You’ll see the server running on http://localhost:6800.
Настройте проект Scrapy: Modify the scrapy.cfg file in your project to include the correct deployment URL:
[настройки]
по умолчанию = scraper.settings
[deploy:local]
url = http://localhost:6800/
проект = скребок
Разверните спайдера: Разверните своего спайдера в Scrapyd с помощью следующей команды:
scrapyd-deploy местный -p scrapy
В ответе должен быть JSON, подтверждающий развертывание.
Мониторинг развертывания: Open your browser and navigate to http://localhost:6800. Your project should be listed under “Available projects.”
Управление пауками с помощью Scrapyd
Scheduling Tasks
Вы можете планировать запуск спайдеров через JSON API Scrapyd. Эндпоинт для планирования: http://localhost:6800/schedule.json. Используйте следующую команду curl:
curl http://localhost:6800/schedule.json -d project=scraper -d spider=product_scraper
Alternatively, you can create a Python script (schedule.py) to make the request:
импорт запросы
url = 'http://localhost:6800/schedule.json'
data = {'project': 'scraper', 'spider': 'product_scraper'}
response = requests.post(url, data=data)
если response.status_code == 200:
print(response.json())
else:
print(response.json())
Monitoring Jobs
To monitor all running tasks, use the listjobs.json endpoint:
curl http://localhost:6800/listjobs.json?project=scraper
You can also create a Python script (monitor.py) for monitoring:
import requests
url = 'http://localhost:6800/listjobs.json'
params = {'project': 'scraper'}
response = requests.получить(url, params=params)
если response.status_code == 200:
print(response.json())
else:
print(response.json())
Cancelling Jobs
To cancel a running job, use the cancel.json endpoint. Provide the job ID you want to cancel:
curl http://localhost:6800/cancel.json -d project=scraper -d job=<TARGET_JOB_ID>
Или на Python:
импорт запросы
url = 'http://localhost:6800/cancel.json'
data = {'project': 'scraper', 'job': '<TARGET_JOB_ID>'}
response = requests.post(url, data=data)
если response.status_code == 200:
print(response.json())
else:
print(response.json())
ScrapydWeb: пользовательский интерфейс для управления пауками Scrapy
ScrapydWeb — это веб-интерфейс для управления задачами Scrapyd. Он позволяет легко планировать запуск и отслеживать спайдеры, хотя сейчас поддерживает только версии Python ниже 3.9.
Install ScrapydWeb: Установите его с помощью pip:
pip install scrapydweb
Запустите сервер ScrapydWeb: Run the command scrapydweb from your project folder. The interface will be accessible at http://127.0.0.1:5000.
Планирование и мониторинг спайдеров: Используйте интерфейс, чтобы планировать, запускать и отслеживать своих спайдеров. Также можно настраивать cron-задачи и параметры спайдера, такие как User-Agent и cookies.
Gerapy: расширенное управление пауками
Gerapy — ещё один инструмент на базе Django и Scrapy для управления спайдерами. Он предлагает дополнительные возможности, такие как планирование cron-задач, визуальный редактор кода и многое другое.
Install Gerapy: Установите Gerapy с помощью pip:
pip install gerapy
Set Up Gerapy: Инициализируйте и настройте Gerapy для синхронизации с Scrapyd, следуя инструкциям по настройке.
Создание и планирование задач: Используйте веб-интерфейс Gerapy, чтобы создавать задачи, планировать их с помощью интервалов или cron-триггеров и отслеживать выполнение задач.
Заключение
Scrapyd — это надежное решение для управления пауками Scrapy, обеспечивающее эффективное планирование задач, мониторинг и масштабирование. Используя API Scrapyd, ScrapydWeb или Gerapy, вы можете упростить рабочие процессы веб-скрейпинга и повысить производительность.

