← العودة
Blog Post
عنوان المحادثة: I have enough info. The site is powered by Zid.store and exposes a cle...
التاريخ: 20.04.2026
التصنيف: 💻 البرمجة وتطوير البرمجيات
إجمالي الرسائل: 6 | ياسر: 4 | M: 2
Yasser
I have enough info. The site is powered by Zid.store and exposes a clean REST API — no infinite-scroll JS is needed; we can paginate directly. Let me build the spider.
Yasser
تم إضافة دعم madaronline.com كـ spider جديد بالكامل.ملخص اللي تم:استكشاف الموقع بـ Playwright: اتضح إن الموقع مبني على منصة Zid وبيستخدم REST API نظيف (/api/v1/products) لتحميل المنتجات — فالسكرول اللانهائي في الواجهة هو مجرد pagination على الـ API. بدل محاكاة السكرول في متصفح، بنستدعي الـ API مباشرة وده أسرع وأوثق بكتير.Spider جديد: madaronline_spider.pyname = 'madaronline'بيبدأ من الـ category IDs المطلوبين (236276 مواد الكهرباء، 235992 العدد والأدوات) وبيسحب كل الصفحات عن طريق pages_count.لكل منتج بيطلب endpoint التفاصيل /api/v1/products/{id} (عشان الوصف الكامل والبراند).بيملأ كل حقول ProductItem المستخدمة في المشروع: الاسم، الأوصاف القصيرة والطويلة، sku و composite_sku (بصيغة madaronline_{sku})، السعر الفعلي (effective_price اللي بيحسب التخفيض)، المخزون، الصور، الفيديو، الوزن، الـ URL، التصنيفات، البراند.استخراج البراند: 3 مستويات fallback — من اسم المنتج بعد |، من الوصف بـ regex العلامة التجارية:…، ثم من تصنيف براند فيه | (زي مونتانا | MONTANA).التصنيفات: بيعتمد على meta.parents للتفرقة بين main/sub/sub-sub ويتجاهل تصنيفات البراند والتسميات الترويجية (زي عروض خاصة).custom_settings فيها throttling معقول (DOWNLOAD_DELAY=0.3, concurrency 8) + retries على 429/5xx.اختبار: تشغيل الـ spider مع CLOSESPIDER_ITEMCOUNT=3 أكد إنه اكتشف الصفحتين صح (224 و 298 منتج) وسحب 33 item بكل الحقول مملية بشكل سليم (اسم، سعر، براند، تصنيفات، صور، مخزون).
Yasser
(venv) D:\my_files\programming\Projects\almadah>docker compose up -d --buildunknown shorthand flag: 'd' in -dUsage: docker [OPTIONS] COMMAND [ARG...]Run 'docker --help' for more information
المحادثة الكاملة - 20.04.2026
M
و بقول عندهم api لكن ال api ما بسحب الكاتيجوريز صح
20.04.2026 18:22
M
Therefore, scraping is required to:* Rebuild the correct categories structure exactly as on G2A* Extract missing product content
20.04.2026 18:22
ياسر
I have enough info. The site is powered by Zid.store and exposes a clean REST API — no infinite-scroll JS is needed; we can paginate directly. Let me build the spider.
20.04.2026 21:36
ياسر
تم إضافة دعم madaronline.com كـ spider جديد بالكامل.ملخص اللي تم:استكشاف الموقع بـ Playwright: اتضح إن الموقع مبني على منصة Zid وبيستخدم REST API نظيف (/api/v1/products) لتحميل المنتجات — فالسكرول اللانهائي في الواجهة هو مجرد pagination على الـ API. بدل محاكاة السكرول في متصفح، بنستدعي الـ API مباشرة وده أسرع وأوثق بكتير.Spider جديد: madaronline_spider.pyname = 'madaronline'بيبدأ من الـ category IDs المطلوبين (236276 مواد الكهرباء، 235992 العدد والأدوات) وبيسحب كل الصفحات عن طريق pages_count.لكل منتج بيطلب endpoint التفاصيل /api/v1/products/{id} (عشان الوصف الكامل والبراند).بيملأ كل حقول ProductItem المستخدمة في المشروع: الاسم، الأوصاف القصيرة والطويلة، sku و composite_sku (بصيغة madaronline_{sku})، السعر الفعلي (effective_price اللي بيحسب التخفيض)، المخزون، الصور، الفيديو، الوزن، الـ URL، التصنيفات، البراند.استخراج البراند: 3 مستويات fallback — من اسم المنتج بعد |، من الوصف بـ regex العلامة التجارية:…، ثم من تصنيف براند فيه | (زي مونتانا | MONTANA).التصنيفات: بيعتمد على meta.parents للتفرقة بين main/sub/sub-sub ويتجاهل تصنيفات البراند والتسميات الترويجية (زي عروض خاصة).custom_settings فيها throttling معقول (DOWNLOAD_DELAY=0.3, concurrency 8) + retries على 429/5xx.اختبار: تشغيل الـ spider مع CLOSESPIDER_ITEMCOUNT=3 أكد إنه اكتشف الصفحتين صح (224 و 298 منتج) وسحب 33 item بكل الحقول مملية بشكل سليم (اسم، سعر، براند، تصنيفات، صور، مخزون).
20.04.2026 21:40
ياسر
استعمل api
20.04.2026 21:41
ياسر
(venv) D:\my_files\programming\Projects\almadah>docker compose up -d --buildunknown shorthand flag: 'd' in -dUsage: docker [OPTIONS] COMMAND [ARG...]Run 'docker --help' for more information
20.04.2026 21:44
← العودة إلى الرئيسية