Yandex.Eda وDelivery Club وSberMarket وعشرات المجمعات الإقليمية للتوصيل - هي كنز حقيقي من البيانات للمسوقين والمحللين وأصحاب الأعمال في مجال المطاعم. لكن بمجرد أن تبدأ في جمع الأسعار والمواقع في القوائم بشكل منهجي، تبدأ الخدمات في حظر الطلبات. في هذه المقالة، سنناقش كيفية تنظيم تحليل القوائم وأسعار التوصيل بشكل صحيح، والأدوات التي يجب استخدامها وكيف تساعد البروكسي في تجنب الحظر.
لماذا تحليل قوائم المطاعم وأسعار التوصيل
سوق توصيل الطعام في روسيا هو أحد أكثر القطاعات ديناميكية في التجارة الإلكترونية. تتغير أسعار الأطباق ومحتويات القوائم وظروف التوصيل حرفيًا كل يوم. من المستحيل تتبع هذه التغييرات يدويًا إذا كان الأمر يتعلق بالعشرات من المنافسين أو المئات من المواقع. هنا يأتي دور جمع البيانات التلقائي.
إليك من يستخدم تحليل القوائم والأسعار في الممارسة العملية:
- أصحاب المطاعم والمقاهي - يتتبعون أسعار المنافسين في منطقتهم لضبط تسعيرهم بسرعة.
- المسوقون في سلاسل المطاعم - يحللون أي الأطباق يروج لها المنافسون من خلال العروض والخصومات.
- المحللون في سوق HoReCa - يقومون بإعداد تقارير حول الأسعار المتوسطة لفئات الأطباق في مدن ومناطق مختلفة.
- المجمعات الناشئة - يجمعون قاعدة بيانات للمطاعم مع القوائم والأسعار لكاتالوجاتهم الخاصة.
- المستثمرون والمستشارون - يقيمون البيئة التنافسية قبل افتتاح منشأة جديدة أو امتياز.
- مطوروا التطبيقات - يشكلون قواعد بيانات للأطباق لتطبيقات حساب السعرات الحرارية أو تخطيط الوجبات.
إذا كنت تعمل في مجال المطاعم أو تقوم بتحليلها، فإن المراقبة المنتظمة لأسعار المنافسين ليست ترفًا، بل ضرورة. يمكن أن تؤثر الفروق البالغة 30-50 روبل في طبق شائع بشكل مباشر على التحويل إلى الطلبات. وبدون الأتمتة، ستظل دائمًا خطوة وراء أولئك الذين قاموا بالفعل بإعداد جمع البيانات.
ما هي البيانات التي يتم جمعها من المجمعات
قبل إعداد البرنامج، من المهم أن نفهم ما هي البيانات التي تحتاجها بالضبط. تحتوي المجمعات على عدة طبقات من المعلومات، وكل منها مفيد لمهام مختلفة.
| نوع البيانات | ماذا يتضمن | لمن هو مفيد |
|---|---|---|
| القوائم والمواقع | أسماء الأطباق، الأوصاف، المكونات، الوزن، السعرات الحرارية | مطوروا التطبيقات، أخصائيو التغذية |
| أسعار الأطباق | السعر الحالي، السعر مع الخصم، تاريخ التغييرات | أصحاب المطاعم، المسوقون |
| شروط التوصيل | تكلفة التوصيل، الحد الأدنى لمبلغ الطلب، وقت التوصيل | المحللون، الشركات الناشئة |
| العروض والخصومات | خصومات، كومبو، أطباق ترويجية، عروض موسمية | المسوقون، الاستخبارات التنافسية |
| التقييمات والمراجعات | تقييمات المنشآت، عدد المراجعات، علامات الجودة | المستثمرون، المستشارون |
| البيانات الجغرافية | العناوين، مناطق التوصيل، مناطق الوجود | المحللون في السوق، الامتيازات |
يمثل تتبع الأسعار في الديناميكية قيمة خاصة: إذا تم جمع البيانات مرة واحدة يوميًا على مدى عدة أشهر، يمكن رؤية أنماط تسعير المنافسين - متى يرفعون الأسعار، متى يطلقون العروض وكيف يتفاعلون مع الأحداث الخارجية (الأعياد، الفعاليات الرياضية، الطقس السيئ).
ميزات حماية Yandex.Eda وDelivery Club وغيرها من المجمعات
تحمي المجمعات الكبيرة للتوصيل بياناتها بنشاط من الجمع التلقائي. وهذا مفهوم: قاعدة بياناتهم للمطاعم والأسعار الحالية هي ميزتهم التنافسية. قبل إعداد البرنامج، يجب أن نفهم ما هي الحمايات التي ستواجهها.
Yandex.Eda
تستخدم عدة مستويات من الحماية في وقت واحد. أولاً، يتم استخدام تحديد الموقع الجغرافي بنشاط: يتم عرض محتوى القائمة والأسعار بناءً على عنوان IP الخاص بك - إذا كان IP من موسكو، سترى المطاعم في موسكو. ثانيًا، يعمل الموقع كتطبيق صفحة واحدة (SPA) على React، مما يعني أن البيانات يتم تحميلها عبر طلبات API، وليس مدفونة في HTML. ثالثًا، عند النشاط المريب، يتم تفعيل Yandex SmartCaptcha. إذا كانت هناك طلبات متكررة من عنوان IP واحد، فلن يُسمح لك بالدخول إلى الموقع.
Delivery Club (SberMarket)
هيكل مشابه: يتم تقديم البيانات عبر API داخلي، وليس عبر HTML ثابت. يقوم الخدمة بتحليل أنماط السلوك: إذا كانت الطلبات تأتي بسرعة كبيرة أو بدون فترات توقف - يتم الحظر. كما يتم استخدام تحليل User-Agent وعناوين الطلبات. العناوين غير القياسية تثير الشكوك على الفور.
المجمعات الإقليمية
خدمات مثل Chibbis وGoloso، والمجمعات المحلية في المناطق، عادةً ما تكون لديها حماية أضعف. يستخدم جزء منها صفحات HTML بسيطة يمكن تحليلها باستخدام الأدوات القياسية. ومع ذلك، فإن الحظر بناءً على IP عند الطلبات المتكررة هو ممارسة قياسية هنا أيضًا.
الآليات الرئيسية لحظر برامج التحليل على المجمعات:
- حظر IP عند تجاوز حد الطلبات (تحديد المعدل)
- حظر جغرافي - عرض محتوى مختلف لعناوين IP مختلفة
- تحليل User-Agent وعناوين HTTP
- كابتشا عند النشاط المريب
- تقديم البيانات عبر JavaScript (هيكل SPA)
- تحليل السلوك: سرعة النقرات، التمرير، الفترات
أدوات التحليل بدون كود ومع كود
الخبر الجيد: لا تحتاج إلى معرفة البرمجة لتحليل قوائم المطاعم. هناك حلول جاهزة بدون كود تتعامل مع معظم المهام. ولكن للعمل مع مواقع SPA مثل Yandex.Eda، ستحتاج إلى أدوات أكثر جدية.
أدوات بدون كود (بدون برمجة)
Octoparse - واحدة من أكثر أدوات التحليل البصرية شعبية. تتيح لك النقر على عناصر الصفحة وبناء سيناريو لجمع البيانات دون كتابة كود. هناك وضع سحابي مع تدوير IP. مناسبة لجمع القوائم من المواقع ذات الهيكل البسيط.
ParseHub - أداة مماثلة مع واجهة بصرية. يمكنها العمل مع صفحات JavaScript، مما يجعلها قابلة للتطبيق على المجمعات الحديثة. هناك دعم للبروكسي.
Apify - منصة تحتوي على "ممثلين" جاهزين (برامج تحليل جاهزة لمواقع شعبية). لبعض المجمعات، هناك حلول جاهزة في سوقهم. يمكن تشغيلها عبر واجهة الويب دون كود.
أدوات مع كود (للمطورين)
Python + Requests + BeautifulSoup - مجموعة كلاسيكية لتحليل الصفحات الثابتة. سريعة وسهلة، لكنها لا تتعامل مع تقديم JavaScript.
Python + Selenium أو Playwright - تتحكم في متصفح حقيقي (Chrome/Firefox)، لذا تتعامل مع مواقع SPA وJavaScript وحتى بعض الكابتشا. يعتبر Playwright حلاً أكثر حداثة وسرعة. هذه المجموعة تعمل مع Yandex.Eda وDelivery Club.
Scrapy - إطار عمل احترافي للتحليل على نطاق واسع باستخدام Python. يدعم قوائم الطلبات، والوسائط للبروكسي، والتصدير إلى تنسيقات مختلفة. الخيار الأمثل لمشاريع كبيرة لجمع بيانات المطاعم.
| الأداة | هل تحتاج إلى كود؟ | تقديم JavaScript | بروكسي | مناسب لـ |
|---|---|---|---|---|
| Octoparse | لا | جزئيًا | تدوير مدمج | المجمعات الإقليمية |
| ParseHub | لا | نعم | بروكسي خارجية | معظم المجمعات |
| Apify | لا | نعم | مدمجة + خارجية | Yandex.Eda، Delivery Club |
| Selenium/Playwright | نعم (Python) | نعم | بروكسي خارجية | أي مواقع |
| Scrapy | نعم (Python) | عبر الإضافات | بروكسي خارجية | جمع البيانات على نطاق واسع |
لماذا لا يعمل التحليل بدون بروكسي
هذا هو السؤال الرئيسي. العديد من المحللين المبتدئين يحاولون تشغيل البرنامج مباشرة من عنوان IP الخاص بهم ويواجهون حظرًا على الفور. السبب بسيط: ترى المجمعات مئات الطلبات من عنوان واحد في فترة زمنية قصيرة وتحظرها تلقائيًا. قد يستغرق استعادة الوصول من عدة ساعات إلى عدة أيام.
تحل البروكسي هذه المشكلة من خلال توزيع الطلبات بين العديد من عناوين IP المختلفة. من وجهة نظر الخادم، تبدو الطلبات كحركة مرور عادية من مستخدمين مختلفين من أماكن مختلفة. لكن ليست جميع البروكسي فعالة بنفس القدر لهذه المهمة.
بروكسي سكنية
البروكسي السكنية تستخدم عناوين IP لمستخدمين حقيقيين في منازلهم. من وجهة نظر Yandex.Eda أو Delivery Club - هو شخص عادي دخل لرؤية قائمة المطعم. هذه البروكسي لا تتعرض للحظر تقريبًا عند استخدامها بشكل صحيح. الخيار المثالي لجمع البيانات من المجمعات الكبيرة ذات الحماية القوية.
بروكسي موبايل
البروكسي الموبايل - عناوين IP لمزودي الخدمة (MTS وBeeline وMegaFon وما إلى ذلك). ميزتها هي أن عنوان IP موبايل واحد يمكن أن يستخدمه الآلاف من المستخدمين الحقيقيين في نفس الوقت (عبر NAT)، لذلك نادرًا ما تحظر المواقع العناوين الموبايل. وهذا يجعلها واحدة من أكثر الخيارات موثوقية للتحليل مع تكرار طلبات عالية.
بروكسي مراكز البيانات
بروكسي مراكز البيانات هي الأسرع والأرخص، لكن عناوين IP الخاصة بها يتم التعرف عليها بسهولة على أنها "غير بشرية". ستكون مناسبة للمجمعات الإقليمية ذات الحماية البسيطة، لكن Yandex.Eda وDelivery Club تحظرها بسرعة كافية. ومع ذلك، فإن بروكسي مراكز البيانات تعمل بشكل جيد للتجول الأولي في هيكل الموقع واختبار البرنامج قبل التشغيل الفعلي.
ما هو نوع البروكسي الذي تختاره لتحليل القوائم:
- Yandex.Eda وDelivery Club → بروكسي سكنية أو موبايل
- المجمعات الإقليمية (Chibbis وما إلى ذلك) → بروكسي مراكز البيانات أو سكنية
- جمع البيانات من جميع أنحاء روسيا (مدن مختلفة) → سكنية مع استهداف جغرافي حسب المدن
- مراقبة عالية التكرار (كل ساعة) → بروكسي موبايل مع تدوير
إعداد خطوة بخطوة للبرنامج مع البروكسي
دعونا نحلل سيناريو عملي: تريد جمع أسعار البيتزا يوميًا من 20 منافسًا في مدينتك من Yandex.Eda. إليك كيفية إعداد ذلك خطوة بخطوة.
الخطوة 1. دراسة هيكل API للمجمع
افتح Yandex.Eda في المتصفح، واضغط على F12 (DevTools)، وانتقل إلى علامة التبويب Network وقم بتصفية الطلبات حسب XHR/Fetch. ابحث عن صفحة المطعم وانظر إلى طلبات API التي يتم إرسالها عند تحميل القائمة. عادةً ما يكون هذا شيئًا مثل api/v1/menu?restaurantId=.... قم بتدوين رؤوس هذه الطلبات - ستحتاج إليها للتقليد.
الخطوة 2. اختر الأداة
إذا كنت لا تكتب كود - استخدم Apify أو ParseHub. إذا كنت تكتب بلغة Python - سيكون Playwright الخيار الأمثل للعمل مع مواقع JavaScript. قم بتثبيت الأداة المطلوبة وتأكد من أنها تدعم الاتصال بالبروكسي الخارجية.
الخطوة 3. احصل على بروكسي مع استهداف جغرافي
هذه نقطة مهمة. تعرض Yandex.Eda مطاعم مختلفة بناءً على المدينة. إذا كنت تقوم بتحليل قوائم المطاعم في يكاترينبرغ - ستحتاج إلى بروكسي مع IP من يكاترينبرغ. البروكسي السكنية مع الاستهداف الجغرافي حسب المدينة تسمح لك بالحصول على المحتوى الذي يراه المستخدم المحلي. حدد المنطقة المطلوبة عند إعداد البروكسي.
الخطوة 4. إعداد تدوير البروكسي
لا تستخدم بروكسي واحدة لجميع الطلبات. قم بإعداد تدوير: كل 5-10 طلبات، قم بتغيير IP. في Apify، يتم ذلك من خلال إعدادات مجموعة البروكسي. في Scrapy - عبر الوسائط. في Playwright - من خلال تمرير بروكسي جديدة عند إنشاء كل سياق متصفح. كلما تغير IP بشكل متكرر، انخفض خطر الحظر.
الخطوة 5. إعداد تأخيرات بين الطلبات
أضف فترات توقف عشوائية بين الطلبات - من 2 إلى 8 ثوانٍ. هذا يحاكي سلوك المستخدم الحقيقي. لا تقم أبدًا بإجراء طلبات بفاصل أقل من 1 ثانية - هذه هي الطريقة المؤكدة للحظر. في Scrapy، استخدم المعامل DOWNLOAD_DELAY وقم بتمكين AUTOTHROTTLE_ENABLED.
الخطوة 6. إعداد رؤوس الطلبات الصحيحة
دائمًا قم بتمرير User-Agent واقعي (سلسلة المتصفح)، ورأس Accept-Language (على سبيل المثال، ru-RU,ru;q=0.9) وReferer. الطلبات بدون هذه الرؤوس تبدو كروبوت وتُحظر في المقام الأول. استخدم سلاسل User-Agent الحالية من Chrome أو Firefox.
الخطوة 7. إعداد الجدول الزمني وتخزين البيانات
قم بتشغيل البرنامج في الليل (من 2:00 إلى 6:00) - تكون الحمل على خوادم المجمعات في أدنى مستوى، وحركة المرور المشبوهة أقل وضوحًا. احفظ البيانات في قاعدة بيانات (PostgreSQL، MySQL) أو على الأقل في CSV مع طوابع زمنية. سيسمح لك ذلك ببناء تاريخ لتغير الأسعار.
# مثال على إعداد البروكسي في Playwright (Python)
from playwright.sync_api import sync_playwright
import random
import time
proxies = [
{"server": "http://proxy1.example.com:8080", "username": "user", "password": "pass"},
{"server": "http://proxy2.example.com:8080", "username": "user", "password": "pass"},
# ... المزيد من البروكسي
]
def parse_restaurant_menu(url):
proxy = random.choice(proxies)
with sync_playwright() as p:
browser = p.chromium.launch()
context = browser.new_context(
proxy=proxy,
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
)
page = context.new_page()
# تأخير عشوائي من 2-8 ثوانٍ
time.sleep(random.uniform(2, 8))
page.goto(url)
page.wait_for_selector('.menu-item') # ننتظر تحميل القائمة
# جمع بيانات الأطباق
items = page.query_selector_all('.menu-item')
menu_data = []
for item in items:
name = item.query_selector('.item-name').inner_text()
price = item.query_selector('.item-price').inner_text()
menu_data.append({'name': name, 'price': price})
browser.close()
return menu_data
الأخطاء الشائعة وكيفية تجنبها
حتى مع الإعداد الصحيح للأدوات، يواجه العديد من الأشخاص مشاكل عند تحليل بيانات توصيل الطعام. إليك أكثر الأخطاء شيوعًا وطرق إصلاحها.
الخطأ 1: استخدام بروكسي واحدة لجميع الطلبات
حتى أفضل بروكسي سكنية ستتعرض للحظر إذا كانت هناك مئات الطلبات يوميًا إلى موقع واحد. استخدم دائمًا مجموعة من 10-20 بروكسي مع تدوير. كلما زاد عدد المطاعم التي تقوم بتحليلها، زادت الحاجة إلى البروكسي.
الخطأ 2: تجاهل الاستهداف الجغرافي
تعرض Yandex.Eda وDelivery Club محتوى مختلفًا بناءً على مدينة المستخدم. إذا كنت ترغب في جمع بيانات عن مطاعم نوفوسيبيرسك، ولكنك تستخدم بروكسي موسكو - ستحصل على بيانات موسكو. تحقق دائمًا من أن البروكسي تتوافق مع المنطقة المطلوبة.
الخطأ 3: تحليل HTML بدلاً من API
يحاول المحللون المبتدئون جمع البيانات من كود HTML للصفحات. لكن في مواقع SPA (وYandex.Eda هي واحدة من هذه) لا تكون البيانات مدفونة في HTML - يتم تحميلها عبر API. من الأكثر فعالية العثور على نقطة النهاية API المطلوبة عبر DevTools والاتصال بها مباشرة. هذا أسرع وأكثر استقرارًا ويتطلب موارد أقل.
الخطأ 4: تكرار الطلبات بشكل مرتفع جدًا
من المفهوم الرغبة في جمع البيانات بسرعة، لكنها تؤدي إلى حظر فوري. لمراقبة الأسعار يوميًا في 50 مطعمًا، يكفي تشغيل البرنامج مرة واحدة يوميًا مع فترات توقف من 3-5 ثوانٍ بين الطلبات. لا تحاول تسريع العملية عن طريق تقليل التأخيرات.
الخطأ 5: عدم مراقبة فعالية البروكسي
يمكن أن "تموت" البروكسي - يتم حظرها، أو تنتهي صلاحيتها. إذا استمر البرنامج في العمل مع بروكسي محظور، ستحصل على بيانات فارغة أو أخطاء دون ملاحظة المشكلة. قم بإعداد فحص فعالية البروكسي قبل كل تشغيل واستبدال تلقائي للعناوين غير العاملة.
الخطأ 6: تجاهل تغييرات هيكل الموقع
تقوم المجمعات بتحديث مواقعها وAPIs بشكل منتظم. قد يتوقف البرنامج الذي كان يعمل قبل شهر عن العمل بعد التحديث الأخير. قم بإعداد إشعارات عن الأخطاء وتحقق من فعالية البرنامج مرة واحدة على الأقل في الأسبوع. احتفظ بالوثائق المتعلقة بهيكل البيانات التي تجمعها.
قائمة التحقق قبل تشغيل برنامج تحليل قوائم المطاعم:
- ✅ تم إعداد مجموعة من 10+ بروكسي مع تدوير
- ✅ تتوافق البروكسي مع المدينة/المنطقة المطلوبة
- ✅ فترات توقف بين الطلبات من 3-8 ثوانٍ (عشوائية)
- ✅ تم تعيين User-Agent واقعي
- ✅ تمت إضافة رؤوس Accept-Language وReferer
- ✅ تم إعداد تخزين البيانات مع طوابع زمنية
- ✅ تم تمكين مراقبة الأخطاء والإشعارات
- ✅ تم جدولة التشغيل في الليل
الخاتمة
تحليل قوائم المطاعم وأسعار التوصيل هو أداة حقيقية للميزة التنافسية في مجال المطاعم وتحليل سوق HoReCa. تحمي Yandex.Eda وDelivery Club وغيرها من المجمعات بياناتها بنشاط، ولكن مع النهج الصحيح - اختيار الأدوات المناسبة، إعداد التأخيرات واستخدام بروكسي عالية الجودة - يعمل جمع البيانات بشكل مستقر ودون حظر.
النقاط الرئيسية من هذه المقالة: استخدم الأدوات التي تدعم تقديم JavaScript (Playwright، Apify)، قم بإعداد تدوير البروكسي، لا تنسَ الاستهداف الجغرافي ودائمًا أضف فترات توقف عشوائية بين الطلبات. هذه هي الأسس الثلاثة لتحليل مستقر.
إذا كنت تخطط لجمع البيانات بانتظام من Yandex.Eda أو Delivery Club أو المجمعات الإقليمية للتوصيل، نوصي بالاهتمام بـ البروكسي السكنية - فهي توفر أقصى قدر من المقاومة للحظر وتدعم الاستهداف الجغرافي حسب المدن الروسية، وهو أمر حاسم لجمع البيانات بشكل صحيح عن الأسعار في مناطق معينة.
```