

در این مقاله عملی برای توسعهدهندههای پایتون در سطح متوسط، نحوهٔ نصب، پیکربندی و استفاده از ScrapydWeb را برای مدیریت و مانیتورینگ پروژههای وب اسکریپینگ با Scrapy شرح میدهم. تا انتها خواهید دانست چگونه Scrapyd را نصب و پروژهها را به آن دیپلوی کنید، ScrapydWeb را راهاندازی کنید، لاگها را با Logparser پردازش کنید و از طریق API بهصورت برنامهنویسی کارها را زمانبندی کنید.
ScrapydWeb یک داشبورد مدیریتی برای تعامل آسانتر با دیمونهای Scrapyd است. هدف آن جمعآوری کنترل چند سرور، زمانبندی و نمایش آمار اجرای خزندگرها در یک رابط واحد است.
مراحل کلی:
برای نصب Scrapyd از pip استفاده کنید و سرویس را اجرا نمایید:
pip install scrapyd
scrapyd
این سرویس بهصورت پیشفرض روی پورت 6800 گوش میدهد. سپس برای دیپلوی پروژه از scrapyd-client استفاده کنید:
pip install git+https://github.com/scrapy/scrapyd-client.git
# در مسیر پروژه scrapy:
scrapyd-deploy default
فایل scrapyd.cfg باید بخش [deploy] را داشته باشد، مثلاً:
[settings]
default = demo.settings
[deploy]
url = http://localhost:6800/
project = demo
توضیح: بخش url نشاندهندهٔ endpoint برای آپلود نسخههای پروژه است و project نام پروژهای است که دیپلوی میشود.
برای نصب آخرین نسخه:
pip install --upgrade git+https://github.com/my8100/scrapydweb.git
scrapydweb
دستور scrapydweb در اولین اجرا فایلهای پیکربندی را میسازد؛ در اجراهای بعدی سرویس را روی 127.0.0.1:5000 بالا میآورد. اگر در اولین اجرا سرور شروع نشد، مجدداً دستور را اجرا کنید تا سرویس راه بیفتد.
لیست سرورها در تنظیمات SCRAPYD_SERVERS قرار میگیرد. فرمتها میتواند رشته یا تاپل باشد. نمونهای از فرمت رشتهای:
SCRAPYD_SERVERS = [
'127.0.0.1:6800',
'username:password@remotehost:6801#group',
]
نکات امنیتی و شبکهای:
گاهی لازم است از طریق یک اسکریپت پایتون مستقیم به Scrapyd درخواست بفرستید تا یک spider اجرا شود. مثال زیر نشان میدهد چگونه یک درخواست POST به endpoint زمانبندی ارسال کنیم:
import requests
url = "http://127.0.0.1:6800/schedule.json"
data = {
"project": "demo",
"spider": "my_spider",
"setting": "KEY=VALUE" # اختیاری: تنظیمات runtime
}
resp = requests.post(url, data=data)
print(resp.status_code, resp.json())
توضیح خطبهخط:
برای دیدن آمار و لاگهای اجرای spiders باید لاگها را پارس کنید. Logparser این کار را انجام میدهد و خروجی را برای ScrapydWeb قابل مصرف میکند.
pip install logparser
# در همان دایرکتوریای که Scrapyd لاگها قرار دارند:
logparser
توصیه پیکربندی: اگر Scrapyd و ScrapydWeb روی یک ماشین هستند، مقدار LOCAL_SCRAPYD_LOGS_DIR را به مسیر لاگها تنظیم و ENABLE_LOGPARSER = True در فایل تنظیمات ScrapydWeb قرار دهید.
پس از اتصال سرورها و داشتن لاگهای پردازششده، میتوانید:
چند جایگزین وجود دارد که ویژگیها و روشهای متفاوتی ارائه میدهند:
پیشنهاد: قبل از انتخاب، نیازمندیهای خود (مانند مقیاس، لاگینگ، احراز هویت و هزینه نگهداری) را مشخص کنید و براساس آن جایگزین مناسب را برگزینید.
ScrapydWeb ابزار خوبی برای مدیریت چند سرور Scrapyd و نگریستن منسجم به اجرای spiders است. با نصب ساده، قابلیتهایی مثل تحلیل لاگ و تایمر تسک، میتواند گردش کار اسکریپ شما را بهبود دهد. در عین حال برای تولیدیسازی باید به مسائل مربوط به امنیت، TLS، مقیاسپذیری و مانیتورینگ متمرکز توجه کنید. اگر نیاز به مانیتورینگ حرفهایتر دارید، جایگزینهایی مثل ScrapeOps را بررسی کنید.