جلب المعلومات من المواقع (Web Crawling)

 

جلب المعلومات من المواقع (Web Crawling)


1- المقدمة

مع تطور تطبيقات الويب الحديثة، لم تعد البيانات تُعرض بشكل مباشر داخل HTML، بل أصبحت تعتمد على JavaScript و AJAX و Internal State. هذا أدى إلى ظهور تقنيات وأدوات متعددة لجلب البيانات، تختلف حسب طبيعة وتعقيد الموقع.


2- تعريف Web Crawling

المفهوم

التعريف

Web Crawling

تصفح المواقع آلياً لاكتشاف الصفحات وتتبع الروابط

Web Scraping

استخراج البيانات المستهدفة من صفحات محددة


3- طرق جلب البيانات من المواقع

الطريقة

الفكرة

الأدوات المحددة

الميزات

العيوب

الاستخدام

HTTP Requests

طلب مباشر للـ HTML

requests, httpx, urllib3, BeautifulSoup, lxml

سريع جداً / خفيف

لا يدعم JavaScript

مواقع بسيطة (HTML ثابت)

Browser Automation

تشغيل متصفح حقيقي أو وهمي

Selenium WebDriver, Playwright, Puppeteer, Mechanize

يدعم JS و AJAX / يحاكي متصفح حقيقي

أبطأ / يستهلك موارد أعلى

مواقع ديناميكية (JS + AJAX)

Event-driven Crawling

التعامل مع أحداث JS

Playwright Events, dispatchEvent API, jQuery trigger, Splash

يتعامل مع الأحداث والحالة

معقد / يصعب تصحيح الأخطاء

مواقع متقدمة (Events + State)

Hybrid Crawling

دمج كل الطرق حسب الحاجة

Scrapy + Playwright, Zyte API, Apify, ScrapingBee

مرن وقوي / يغطي كل الحالات

أعقد في التطوير والصيانة

الأنظمة الحديثة المعقدة


4- تقنيات الأتمتة المستخدمة في Web Crawling

تتعدد التقنيات المستخدمة لأتمتة جلب البيانات، وتندرج RPA كبند واحد ضمنها:

RPA (Robotic Process Automation) 4.1 

أتمتة العمليات عبر محاكاة تفاعل المستخدم مع الواجهة.

  • الأدوات: UiPath, Automation Anywhere, Blue Prism, Power Automate

  • الاستخدام: مواقع بسيطة، سير عمل محدد وثابت

  • العيب: لا يتعامل مع JavaScript أو State الداخلية

4.2 Browser Automation Frameworks

أطر برمجية للتحكم الكامل في المتصفح على مستوى DOM و JavaScript.

  • الأدوات: Selenium WebDriver, Playwright, Puppeteer, Mechanize

  • الاستخدام: مواقع ديناميكية تعتمد على JS و AJAX

  • الميزة: أقوى من RPA في التعامل مع المواقع المعقدة

4.3 Headless Browsers

متصفحات بدون واجهة رسومية مخصصة للأتمتة وتصيير الصفحات.

  • الأدوات: Splash, Chrome Headless, Firefox Headless, PhantomJS

  • الاستخدام: تنفيذ JS وتصيير الصفحة دون فتح نافذة متصفح

  • الميزة: أسرع وأخف من المتصفح الكامل

4.4 API Interception

اعتراض طلبات الشبكة مباشرة بدلاً من محاكاة الواجهة.

  • الأدوات: Playwright route(), mitmproxy, Charles Proxy, Fiddler

  • الاستخدام: المواقع التي تجلب بياناتها عبر REST API أو GraphQL خفية

  • الميزة: أسرع وأدق — يأخذ البيانات من المصدر مباشرة

4.5 Cloud Crawling Platforms

منصات سحابية متخصصة تجمع كل التقنيات في بيئة جاهزة للإنتاج.

  • الأدوات: Apify, Zyte API, ScrapingBee, Browserless

  • الاستخدام: مشاريع كبيرة تحتاج تجاوز الحماية والـ CAPTCHAs

  • الميزة: جاهزة للإنتاج، لا تحتاج بنية تحتية

مقارنة التقنيات



التقنية

مستوى التحكم

دعم JS

التعقيد

الأنسب لـ

RPA

واجهة المستخدم فقط

محدود

منخفض

عمليات مكررة وثابتة

Browser Automation

DOM + JS كامل

قوي

متوسط

مواقع ديناميكية

Headless Browser

تصيير كامل للصفحة

كامل

متوسط

JS ثقيل بدون تفاعل

API Interception

طبقة الشبكة

لا يحتاجه

عالٍ

بيانات API مخفية

Cloud Platforms

كل الطبقات

كامل

منخفض (جاهز)

إنتاج واسع النطاق


5- التحديات العملية وأدوات الحل

تبرز في الواقع تحديات متكررة عند التعامل مع المواقع الحديثة، فيما يلي أبرزها مع الحلول التقنية المستخدمة:

القوائم المنسدلة المترابطة (Dependent Dropdowns): اختيار قيمة من القائمة لا يكفي لأن الموقع يعتمد على أحداث JavaScript وليس فقط قيم الحقول. الحل باستخدام Selenium + dispatchEvent API:

const el = document.querySelector("#MakerCode");

el.selectedIndex = 5;

el.dispatchEvent(new Event("change", { bubbles: true }));


الأزرار المرتبطة بـ jQuery Events: click() التقليدي لا يُفعّل الزر لأنه مرتبط بـ jQuery event listener. الحل باستخدام jQuery trigger():

$(".searchList").trigger("click");


Pagination عبر JavaScript: التنقل بين الصفحات لا يعتمد على روابط URL بل على استدعاء دوال JS داخلية. الحل باستخدام execute_script:

doPostAction('page', '2');


التحديات الأخرى وأدواتها:

التحدي

الأداة / التقنية

البيانات لا تظهر في HTML

Selenium execute_script / Playwright evaluate()

الحقول لا تقبل Validation

jQuery trigger() / DOM CustomEvent

Session issues / انتهاء الجلسة

browser.restart() / Session cookie management

بيانات تُحمَّل عبر API خفية

Playwright route() / mitmproxy / Charles Proxy


 بالنهاية في المواقع الحديثة، البيانات لا تعتمد فقط على ما يظهر في الصفحة، بل على الأحداث (Events) والحالة الداخلية (State). لذا أصبح اختيار التقنية والأداة المناسبة — من requests البسيطة، مروراً بـ RPA، وصولاً إلى Playwright وApify — أمراً جوهرياً لنجاح أي مشروع Crawling.
جلب المعلومات من المواقع (Web Crawling) جلب المعلومات من المواقع (Web Crawling) بواسطة Remocolla Academy في أبريل 28, 2026 تقييم: 5

ليست هناك تعليقات:

يتم التشغيل بواسطة Blogger.