یک ربات تلگرام برای جستجو و مقایسهی قیمت محصولات در Digikala, eBay و سایر وبسایتهای فروشگاهی.
این پروژه با هدف ایجاد یک ابزار سریع، ایمن و مقیاسپذیر برای دریافت اطلاعات محصولات طراحی شده است.
ScraperShop یک ربات تلگرام است که با دریافت نام محصول، آن را در فروشگاههای مختلف جستجو میکند و نتایج را با جزئیات کامل (نام، قیمت و لینک خرید) در قالب HTML نمایش میدهد.
سیستم از مدیریت صف هوشمند (با Semaphore و Queue) برای اجرای همزمان درخواستها بهره میبرد تا پایداری و امنیت حفظ شود.
| نام | لینک |
|---|---|
| Ali Farisat | 🔗 GitHub |
| Sadegh Kdd | 🔗 GitHub |
- پشتیبانی از چندین فروشگاه:
- 🔹 Digikala
- 🔹 eBay
- 🔹 Global (با پشتیبانی از لینک مستقیم + نام محصول)
- سیستم ضد اسپم برای کاربران
- مدیریت همزمان جستجوها با ManagerQueue
- قالببندی HTML تمیز در نتایج
- ثبت دقیق لاگها در فایل مجزا
- سیستم لغو عملیات (Cancel) برای هر کاربر
- پشتیبانی از چند زبان در کدنویسی (فارسی/انگلیسی)
ScraperShop/
│
├── bot.py # فایل اصلی ربات تلگرام
│
├── digikala_optimized.py # ماژول مخصوص جستجو در Digikala
│
├── ebay_optimized.py # ماژول مخصوص جستجو در eBay
│
├── web_mimic_optimized.py # (اختیاری) ماژول جهانی برای لینکها
│
├── requirements.txt # لیست کتابخانههای مورد نیاز
│
└── README.md # مستندات پروژه
قبل از هر چیز، اطمینان حاصل کنید Python نسخهی 3.10+ روی سیستم شما نصب است.
pip install -r requirements.txtدر صورت نداشتن Playwright، نصب آن نیز ضروری است:
pip install playwright
playwright installدر فایل bot.py، مقدار زیر را با توکن ربات خود جایگزین کنید:
API_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"python bot.pyاگر از VS Code استفاده میکنید، کافیست روی فایل راستکلیک کنید و گزینهی
Run Python File in Terminal را بزنید.
- دستور
/startرا بفرستید. - گزینهی 🛒 فروشگاهها را انتخاب کنید.
- یکی از فروشگاهها را برگزینید:
- 🔎 Digikala
- 🔎 eBay
- 🌍 Global (link + name)
- نام محصول یا لینک را ارسال کنید.
- چند ثانیه صبر کنید تا نتایج با فرمت HTML دریافت شوند.
1. <a href="https://www.digikala.com/product/...">گوشی موبایل سامسونگ A55</a>
💰 قیمت: 24,300,000 تومان
2. <a href="https://www.digikala.com/product/...">هدفون بیسیم شیائومی</a>
💰 قیمت: 1,250,000 تومانکاربر ← Telegram Bot API ← bot.py ← Scraper Manager ← digikala_optimized / ebay_optimized
- هر جستجو در صف (Queue) قرار میگیرد.
- اگر ظرفیت پردازش فعال پر باشد، کاربر در صف انتظار میماند.
- سیستم ضد اسپم از ارسال بیش از حد درخواست جلوگیری میکند.
- در انتهای پردازش، نتیجه در قالب HTML برای کاربر ارسال میشود.
هر ماژول اسکرپر (مثل digikala_optimized.py یا ebay_optimized.py) لاگهای مخصوص خود را در فایل مجزا ذخیره میکند:
digikala_scraper.log
ebay_scraper.log
در این فایلها، زمان، نوع خطا، تلاشهای مجدد و نتایج موفق ثبت میشوند.
- اجرای ایمن توابع با مدیریت Exception
- کنترل همزمانی با Semaphore و Queue
- محدودسازی سرعت ارسال پیامها (Rate Limiter)
- حذف خودکار state کاربران پس از پایان عملیات
این پروژه تحت مجوز GPL-3.0 license منتشر شده است.
استفاده، ویرایش و انتشار مجدد آن با ذکر نام سازندگان مجاز است.
💬برای ارتباط با توسعهدهنده: farisatali12@gmail.com
اگر این پروژه برایتان مفید بود، حتماً به آن ⭐ بدهید تا در GitHub بیشتر دیده شود.