Scrapyd

Scrapyd: Покрокова інструкція

Чи ви збираєте дані у великому масштабі, чи вам потрібен простіший спосіб керувати кількома spiders, Scrapyd спрощує процес і допомагає підтримувати безперебійну роботу всього.

Що таке Scrapyd?

Scrapyd — це інструмент для розгортання й керування спайдерами Scrapy на сервері. Усе можна віддалено контролювати через прості виклики API. Сервер Scrapyd працює як фоновий сервіс, автоматично обробляючи запити на краулінг і виконуючи їх без ручного втручання.

Із Scrapyd ви можете:

  • Розгортайте та керуйте своїм Scrapy проєктом віддалено без зусиль.
  • Керувати всіма своїми завданнями вебскрапінгу через уніфікованим JSON API.
  • Відстежуйте та керуйте своїми спайдерами через зручний вебінтерфейс.
  • Scale your data collection by running spiders across multiple servers.
  • Improve server performance by adjusting the number of concurrent spiders.
  • Automate tasks using tools like Celery and Gerapy.
  • Integrate Scrapy with Python фреймворки на кшталт Django, щоб покращувати ваші вебзастосунки.

Тепер перейдемо до того, як розгорнути ваші спайдери Scrapy за допомогою Scrapyd.

Альтернативне рішення — API для вебскрапінгу та інструменти

Якщо вашому проєкту потрібен вебскрапінг у великому масштабі, і ви не хочете мати справу з проксі та Розв'язувачі CAPTCHA, ви можете обрати один із найкращі API для вебскрапінгу та інструменти. Нижче я перелічив 5 найкращих інструментів для вебскрапінгу.

  1. Bright Data — Best overall for advanced scraping; features extensive proxy management and reliable APIs.
  2. Octoparse — Зручний no-code інструмент для автоматизованого вилучення даних із вебсайтів.
  3. ScrapingBee — API, орієнтований на розробників, який ефективно працює з проксі, браузерами та CAPTCHA.
  4. Scrapy — Фреймворк з відкритим кодом для Python, ідеальний для завдань краулінгу даних і вебскрапінгу.
  5. ScraperAPI — Handles tough scrapes with advanced anti-bot technologies; great for developers.

Я не пов’язаний із жодним із згаданих провайдерів, просто мав із ними хороший досвід.

Як запускати спайдери Scrapy за допомогою Scrapyd

Prerequisites

Переконайтеся, що у вашій системі встановлено 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 import Spider
class MySpider(Spider):
name = 'product_scraper'
start_urls = ['https://www.scrapingcourse.com/ecommerce/']
def parse(self, response):
products = response.css('ul.products li.product')
data = []
for product in products:
product_name = product.css('h2.woocommerce-loop-product__title::text').get()
price = product.css('bdi::text').get()
data.append({'product_name': product_name, 'price': price})
self.log(data)

Test Your Spider: Перевірте спайдер локально, виконавши:

scrapy crawl product_scraper

Це має виконати вебскрапінг і записати назви та ціни товарів зі сторінки eCommerce.

Розгортання павуків у 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:

[settings]
default = scraper.settings
[deploy:local]
url = http://localhost:6800/
project = scraper

Розгорніть спайдер: Розгорніть свій спайдер у Scrapyd за допомогою такої команди:

scrapyd-deploy local -p scraper

Ви маєте побачити 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:

import requests
url = 'http://localhost:6800/schedule.json'
data = {'project': 'scraper', 'spider': 'product_scraper'}
response = requests.post(url, data=data)
if 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.get(url, params=params)
if 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:

import requests
url = 'http://localhost:6800/cancel.json'
data = {'project': 'scraper', 'job': '<TARGET_JOB_ID>'}
response = requests.post(url, data=data)
if 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.

Розклад і моніторинг спайдерів: Використовуйте інтерфейс, щоб планувати, запускати й відстежувати свої spiders. Ви також можете налаштовувати cron-завдання та параметри spider, як-от user agents і cookies.

Gerapy: Розширене керування спайдерами

Gerapy — це ще один інструмент, побудований на Django та Scrapy для керування спайдерами. Він пропонує додаткові можливості, як-от планування завдань cron, візуальний редактор коду та інше.

Install Gerapy: Встановіть Gerapy за допомогою pip:

pip install gerapy

Set Up Gerapy: Ініціалізуйте та налаштуйте Gerapy для синхронізації зі Scrapyd, дотримуючись інструкцій із налаштування.

Створення та планування завдань: Використовуйте вебінтерфейс Gerapy, щоб створювати завдання, планувати їх за допомогою тригерів інтервалу або cron і відстежувати продуктивність завдань.

Conclusion

Scrapyd — це надійне рішення для керування Scrapy spiders, яке забезпечує ефективне планування завдань, моніторинг і масштабування. Використовуючи API Scrapyd, ScrapydWeb або Gerapy, ви можете спростити свої workflows для вебскрапінгу та підвищити продуктивність.

Схожі записи