مدتیه فروشگاه تکنولایف یه جشنواره جذاب به اسم تونل زمان برگزار میکنه.
در این جشنواره، هر چند وقت یکبار یه سری محصولات خاص با تخفیفهای زیاد و موجودی محدود منتشر میشن.
اما نکته اینجاست که این محصولات معمولاً خیلی زود تموم میشن و اگه بخوای دستی چک کنی که صفحهی جشنواره چه زمانی آپدیت شده، عملاً شانسی برای خرید نداری 😅
منم دقیقاً همین مشکل رو داشتم — کنجکاو بودم که بدونم چه زمانی محصولات جدید اضافه میشن، بدون اینکه هی صفحهی سایت رو رفرش کنم.
برای همین تصمیم گرفتم یه ابزار کوچک ولی کاربردی بسازم که خودش تغییرات صفحات وب رو تشخیص بده و به من اطلاع بده.
هدف ساده بود:
یه سیستم بنویسم که بتونه هر چند دقیقه یکبار به آدرسهایی که من تعیین میکنم سر بزنه، و اگر محتوای صفحه نسبت به دفعهی قبل تغییر کرده بود، به من یه نوتیف بده.
به این ترتیب، لازم نیست کاربر دائم سایتها رو چک کنه؛ کافیه یهبار تنظیم کنه و بقیهی کارها رو بسپره به سیستم.
پروژه شامل دو بخش اصلیه:
این بخش با استفاده از کرونجاب (Cron Job) هر چند دقیقه یکبار اجرا میشه و کارهای زیر رو انجام میده:
به آدرسهای ثبتشده درخواست (Request) میفرسته
محتوای HTML صفحه رو ذخیره میکنه
اون رو با نسخهی قبلی مقایسه میکنه
اگر تفاوتی وجود داشت، تغییر رو ثبت و نوتیفیکیشن ارسال میکنه
به زبان ساده، یه سیستم Web Scraper سبک ساختم که هدفش فقط تشخیص تغییر محتواست، نه جمعآوری دادهها.
برای اینکه بشه راحتتر با سیستم کار کرد، یه پنل مدیریتی طراحی کردم که امکانات زیر رو داره:
مشاهدهی لیست سایتهای در حال پایش
دیدن آخرین نسخهی محتوای هر سایت
ثبت یا حذف سایت جدید
مشاهدهی لاگ تغییرات و زمان آخرین بررسیها
با این پنل، همهچیز تحت کنترل قرار میگیره و نیاز نیست وارد دیتابیس یا کد بشی.
برای پیادهسازی این پروژه از ابزارها و تکنولوژیهای زیر استفاده کردم:
PHP برای بخش بکاند
JavaScript برای تعاملهای سمت کاربر در پنل
Cron Jobs برای زمانبندی اجرای خودکار
HTML/CSS برای طراحی رابط کاربری ساده و سبک
در حال حاضر این اسکریپت بهصورت کاملاً خودکار، هر چند دقیقه یکبار آدرسهای تعیینشده رو بررسی میکنه و هرگونه تغییر در محتوای صفحات رو شناسایی میکنه.
وقتی تغییر جدیدی اتفاق بیفته، بلافاصله ثبت میشه و در بخش لاگها قابل مشاهدهست.
به این ترتیب، اگر تکنولایف (یا هر سایت دیگهای) جشنواره جدیدی راه بندازه، اولین کسی که خبردار میشم، منم 😄
این پروژه در اصل یه تمرین جالب برای ترکیب Web Scraping + Automation + Dashboard Design بود.
اما در عمل، تبدیل شد به یه ابزار واقعی که میتونه در موقعیتهای مشابه هم استفاده بشه — مثلاً دنبال کردن تغییر قیمتها، موجود شدن کالاها، یا حتی بررسی تغییرات صفحات خبری.
اگر دوست داری سورس پروژه رو ببینی، میتونی به صفحه گیتهابم سر بزنی :
https://github.com/amintatari64/web-scraper
نظرت در مورد این پروژه چیه؟