چگونه کد وب اسکریپینگ خود را ماژولار و قابلتوسعه کنیم
خیلی از پروژههای وب اسکریپینگ با یک اسکریپت ساده شروع میشوند: چند خط کد برای ارسال درخواست، استخراج اطلاعات، و ذخیرهسازی در یک فایل. اما وقتی پروژه گسترش مییابد — مثلاً تعداد سایتها زیاد میشود، دادهها پیچیدهتر میشوند، یا اعضای تیم بیشتر میشوند — همان اسکریپت ساده تبدیل به گرهای پیچیده و دشوار در توسعه میشود.
راهحل این مشکل، طراحی کد ماژولار است؛ یعنی تقسیمبندی منطقی و ساختاریافته کد به اجزای مستقل و قابل استفاده مجدد. در این مقاله به زبان ساده توضیح میدهیم که چطور میتوان پروژه وب اسکریپینگ را طوری طراحی کرد که هم قابل نگهداری باشد و هم بهراحتی گسترش یابد.

بخش اول: کد ماژولار یعنی چه؟
ماژولار بودن به این معناست که هر بخش از پروژه فقط یک کار مشخص انجام دهد و این بخشها بتوانند بهصورت جداگانه تست، ویرایش یا حتی جایگزین شوند، بدون آنکه سایر قسمتها دچار مشکل شوند.
در یک پروژه وب اسکریپینگ، میتوان ماژولها را به بخشهایی مثل این تقسیم کرد:
- ماژول درخواست (Request Module): دریافت HTML از سایت
- ماژول استخراج (Parser Module): گرفتن داده از HTML
- ماژول ذخیرهسازی (Storage Module): نوشتن در فایل یا پایگاه داده
- ماژول پیکربندی (Config Module): تنظیمات متغیر مانند URL یا تأخیر
- ماژول مدیریت خطا: ثبت و رسیدگی به ارورها
بخش دوم: مزایای کد ماژولار در پروژههای اسکریپ
ماژولار بودن باعث میشود:
- هر فایل یا تابع، وظیفهی مشخصی داشته باشد و سریعتر دیباگ شود
- اگر بخواهید نحوه ذخیرهسازی را از CSV به MySQL تغییر دهید، نیازی به تغییر کل پروژه نیست
- در پروژههای گروهی، هر نفر روی یک بخش کار کند بدون تداخل با بقیه
- تستنویسی آسانتر شود، چون هر قسمت را جداگانه میتوان بررسی کرد
- بعداً بتوانید بخشهایی را در پروژههای دیگر هم استفاده کنید (مثل یک parser یا scraper آماده)
بخش سوم: نکاتی برای نوشتن کد ماژولار و قابلتوسعه
اگر تازه میخواهید پروژهتان را ماژولار کنید، این نکات کاربردی را در نظر بگیرید:
۱. تابعمحور بنویسید
بهجای اینکه همه چیز را در main.py
بنویسید، هر عملیات را به صورت تابع جداگانه بنویسید.
۲. از ساختار پوشهای استفاده کنید
برای مثال:
project/
├── scrapers/
│ ├── digikala.py
│ └── divar.py
├── parsers/
│ ├── product_parser.py
│ └── price_parser.py
├── utils/
│ └── logger.py
├── config/
│ └── settings.py
├── main.py
۳. وابستگیها را مرکزی نگه دارید
تنظیمات مانند آدرس سایت، تأخیر بین درخواستها یا مسیر ذخیرهسازی را در یک فایل پیکربندی قرار دهید.
۴. از کلاسها استفاده کنید (در پروژههای بزرگتر)
اگر پروژه پیچیده است، استفاده از کلاس بهجای توابع ساده میتواند باعث انسجام بهتر و قابلیت توسعه بالاتر شود.
بخش چهارم: آیا همیشه باید ماژولار بنویسیم؟
خیر. اگر پروژه بسیار کوچک، موقتی یا یکبار مصرف است، ماژولار کردن ممکن است وقتگیر و غیرضروری باشد. ولی در این موارد حتماً مستندسازی ساده و نامگذاری مناسب را رعایت کنید. در پروژههایی که:
- بیش از یک سایت را اسکریپ میکنند
- بیش از یک خروجی نیاز دارند
- توسط چند نفر نگهداری میشوند
- در آینده قرار است گسترش یابند
قطعاً باید بهصورت کد ماژولار طراحی شوند.
جمعبندی
در دنیای توسعه نرمافزار، یکی از اصولیترین تفاوتها بین کد آماتور و کد حرفهای، ماژولار بودن است. در پروژههای وب اسکریپینگ، که معمولاً با گذر زمان پیچیدهتر میشوند، طراحی درست از ابتدا میتواند شما را از صدها ساعت بازنویسی و دردسر فنی نجات دهد.
اگر تجربهای در ساختاردهی پروژههای خود دارید یا چالشی در ماژولار کردن کد تجربه کردهاید، خوشحال میشویم در بخش دیدگاهها تجربیاتتان را با ما در میان بگذارید. 👇