استخراج البيانات من الويب: Puppeteer مقابل Selenium

استخراج البيانات من الويب: Puppeteer مقابل Selenium

استخراج البيانات من الويب هو عملية استخراج البيانات من مواقع الويب. يمكنك استخراج البيانات يدويًّا باستخدام متصفحات الويب أو أتمتة هذه العملية باستخدام مكتبات مثل Selenium وPuppeteer.

Selenium هي أداة مفتوحة المصدر تتيح لك أتمتة تطبيقات الويب واختبار وظائف موقعك الإلكتروني دون الحاجة إلى كتابة أي كود في متصفحك. كما أنها تعمل مع لغات برمجة أخرى مثل Java وPython وC# وغيرها.

Puppeteer هي مكتبة جافا سكريبت مخصصة لأتمتة اختبارات متصفح Chrome على أنظمة Linux التي تعمل بدون واجهة مستخدم. تدعم Puppeteer متصفح Chrome، وقد تم اختبارها على أنظمة Ubuntu 16.04 LTS و18.04 LTS وDebian 9 Stretch/Buster/Siduction (64 بت). 

في هذه المقالة، سنتعرف على كيفية استخدام Selenium WebDriver في NodeJS مع Puppeteer لأتمتة التطبيقات باستخدام متصفح Chrome.

ما هو Puppeteer؟

Puppeteer هي مكتبة JavaScript تتيح لك التحكم في المتصفح باستخدام puppeteer.js. توفر المكتبة واجهة برمجة تطبيقات (API) لإنشاء صفحات الويب وإدارتها والتفاعل معها دون الاعتماد على أي أطراف خارجية. كما أنها تدعم التقاط أحداث الماوس وإدخالات لوحة المفاتيح، مما يتيح لك التفاعل مع الصفحة.

كيف يعمل Puppeteer؟

Puppeteer هي مكتبة Node.js للتحكم في متصفح Chrome. تتيح لك هذه المكتبة التحكم في المتصفح باستخدام JavaScript والتفاعل معه بطرق لا يمكن تحقيقها باستخدام HTML وCSS وJS فقط.

يمكنك استخدامه لمحاكاة أحداث الماوس/لوحة المفاتيح، والتقاط لقطات شاشة، والتعامل مع عناصر DOM، وإرسال طلبات HTTP، وما إلى ذلك. كما يوفر Puppeteer واجهة برمجة تطبيقات (API) تتيح لك كتابة نصوصك البرمجية الخاصة بـ Puppeteer دون الحاجة إلى استخدام أي من واجهات برمجة التطبيقات الخاصة به بشكل مباشر. يمكنك قراءة المزيد عن واجهة برمجة التطبيقات هذه هنا: https://github.com/puppeteerjs/puppeteer-api.

يحل Puppeteer المشكلة التالية: كيف يمكنني التحكم في المتصفح دون القدرة على تشغيل JavaScript؟ يتيح لك Puppeteer محاكاة أحداث الماوس واللوحة المفاتيح، والتقاط لقطات شاشة، والتعامل مع عناصر DOM، وإرسال طلبات HTTP، وغير ذلك الكثير. كما يمكن كتابة نصوص Puppeteer البرمجية دون استخدام أي من واجهات برمجة التطبيقات (APIs) الخاصة به بشكل مباشر. وهذا مفيد إذا كنت ترغب في إنشاء امتداد Chrome خاص بك يتفاعل مع المتصفح بطريقة غير متوقعة.

يتغير سياق التعقيد والأتمتة يومًا بعد يوم، لذا قد لا تكون أداة واحدة هي الحل المناسب للجميع. وتوجد بعض القيود على Puppeteer، فهو يدعم متصفح Chrome فقط. أما نسخة Puppeteer المخصصة لمتصفح Firefox فهي قيد التطوير.

ما هي مزايا استخدام Puppeteer؟ 

يوفر Puppeteer طريقة سهلة لتشغيل البرامج النصية في متصفحك دون الحاجة إلى كتابتها بنفسك. إنه بسيط وخفيف الوزن وقابل للتوسيع. يمكنك استخدامه مع أي لغة برمجة أو إطار عمل (NodeJS، Python، Java). ويحتوي على واجهة برمجة تطبيقات (API) خاصة به، لذا لن تضطر إلى تعلم واجهة برمجة تطبيقات أخرى لمجرد أغراض استخراج البيانات من الويب.

لست بحاجة إلى معرفة كيفية عمل Selenium لاستخدام Puppeteer، لكنك ستحصل مع ذلك على جميع مزاياه: الأتمتة، وقابلية الاختبار، وقابلية النقل!

ما هي عيوب استخدام Puppeteer؟

Puppeteer هو إطار عمل حديث جدًّا. فهو لا يزال في مرحلة بيتا ولا يدعم جميع المتصفحات (يدعم فقط Chrome وFirefox وOpera وSafari). ومع ذلك، سيتمكن Puppeteer مع مرور الوقت من دعم المزيد من المتصفحات. كما أن واجهة برمجة التطبيقات (API) ليست ناضجة بقدر Selenium، لذا قد تواجه بعض الصعوبات في البداية، لكن الوضع سيتحسن بمرور الوقت. يمكنك العثور على العديد من الأمثلة حول كيفية استخدام Puppeteer على موقعه الرسمي: puppeteerjs.com/docs/getting-started/. 

كيف أقوم بتثبيت Puppeteer؟ 

يمكنك تثبيت Puppeteer إما عن طريق تنزيل الحزمة من الموقع الإلكتروني أو تثبيتها يدويًّا. انتقل إلى صفحة مستودع Puppeteer وقم بتنزيل أحدث إصدار لنظام التشغيل الخاص بك. لتشغيله، يجب أن يكون NodeJS مثبتًا على جهاز الكمبيوتر الخاص بك. إذا كنت لا تعرف من أين تبدأ، فانتقل إلى هنا: nodejs.org/en/download. قم بتشغيل الأمر npm install -g puppet. سيؤدي ذلك إلى تنزيل جميع التبعيات المطلوبة لتشغيل puppetserver. الآن افتح نافذة محطة طرفية في دليلك الرئيسي واكتب puppetserver. 

إذا سارت الأمور على ما يرام، فمن المفترض أن ترى شيئًا مثل هذا: 

$ node server Starting server… done! http://localhost:4200 Connecting…done! http://localhost:4200 Disconnected / Connected http://localhost:4200 <– Start scraping now! 

لإيقاف العملية، اضغط على Ctrl+C، ثم اكتب exit. 

ما هو السيلينيوم؟

يُعد «سيلينيوم» أداة فعالة يمكنك استخدامها لأتمتة التطبيقات القائمة على الويب. ويُشار إليه عادةً باسم«ويب درايفر». وقد ظهر «سيلينيوم» منذ فترة طويلة، وأصبح أحد أكثر الأدوات شيوعًا في قطاع تكنولوجيا المعلومات. 

ما هي وظيفة سيلينيوم؟

يتيح لك برنامج «Selenium» أتمتة مواقع الويب الخاصة بك من خلال تنفيذ إجراءات مختلفة مثل النقر على الأزرار، وملء النماذج، أو حتى التنقل بين الصفحات. الهدف الرئيسي من هذا البرنامج هو جعل الاختبار الآلي عملية سهلة وفعالة دون الحاجة إلى كتابة أي كود بنفسك. يمكنك استخدام هذا البرنامج من متصفحك (Chrome/Firefox) أو ضمن لغة برمجة مثل Java أو C# أو Python، إلخ. بمجرد تثبيته على جهاز الكمبيوتر الخاص بك، يجب عليك تنزيل خادم سيلينيوم، الذي يعمل على المنفذ 4444 (افتراضيًا). ثم افتح متصفح Chrome/Firefox واكتب chrome://extensions في شريط العناوين، حيث سترى قائمة بالإضافات المتاحة؛ حدد«إدارة الإضافات»، ثم انقر على زر«تحميل الإضافة غير المضغوطة».

يمكنك استخدام Selenium لاختبار مواقع الويب وتطبيقات الهواتف المحمولة وتطبيقات أجهزة الكمبيوتر المكتبية. وهو سهل الاستخدام ويتيح لك أتمتة التطبيقات المستندة إلى الويب دون الحاجة إلى أي معرفة بالبرمجة. كما يمكنك إنشاء اختباراتك الخاصة باستخدام Selenium IDE، الذي يتميز بواجهة مرئية لتطوير الاختبارات بطريقة سهلة الاستخدام.

مزايا السيلينيوم

  • يعمل هذا البرنامج على جميع متصفحات الويب (Chrome، Firefox، IE) والأجهزة المحمولة (Android). ويُعد Selenium برنامجًا متعدد المنصات. كل ما عليك فعله هو تثبيت بيئة تطوير متكاملة (IDE) للمنصة التي تختارها والبدء في استخدام واجهة برمجة التطبيقات (API). ولست مضطرًا لتعلم واجهات برمجة تطبيقات جديدة أو لغات برمجة مختلفة لكل منصة — ما عليك سوى استخدام لغة واحدة تعمل على جميع المنصات. 
  • يدعم Selenium معظم لغات البرمجة المتوفرة، بما في ذلك Java وC# وPython والعديد من اللغات الأخرى. إذا كنت ترغب في أتمتة عملية ما باستخدام JavaScript، فيمكنك استخدام NodeJS مع selenium-nodejs. 
  • يدعم Selenium العديد من الأطر مثل Protractor وWebDriver وغيرها. وأفضل ما يميز هذه الأطر هو أنها توفر طبقة تجريدية جيدة، مما يجعل الأمور أسهل مقارنة بكتابة كود أتمتة المتصفح الخالص مباشرةً في المتصفح نفسه. على سبيل المثال، إذا أردنا تشغيل اختباراتنا على متصفحات متعددة في وقت واحد، فيمكننا القيام بذلك باستخدام selenium-webdriver و selenium-webdriver2. وهذا يعني أننا لن نواجه أي مشاكل عند إجراء الاختبارات عبر متصفحات متعددة في آن واحد، لأن الإطار نفسه سيتولى معالجة كل شيء بدلاً من كتابة كود مخصص يدويًّا في كل متصفح (مما سيجعل مجموعة اختباراتنا تبدو أكثر تعقيدًا بكثير). 
  • تتوفر العديد من المكونات الإضافية لـ Selenium، مثل ملحقات Google Chrome، وإضافات Firefox، وما إلى ذلك. وماذا أيضًا؟ الكثير من الأمثلة! وليس فقط من المشاريع مفتوحة المصدر، بل أيضًا من المشاريع التجارية مثل Appium أو Sauce Labs أو Watir. لذا، إذا كنت تبحث عن شيء سريع وسهل، فجربها! إنها أدوات رائعة! كما أنها تدعم الاختبار غير المتزامن، مما يعني أنه حتى لو استغرق اختبارك وقتًا أطول من المتوقع، فلن يؤثر ذلك على الاختبارات الأخرى التي تُجرى في نفس الوقت دون أن تعيق تدفق تنفيذ بعضها البعض (الوضع غير المتزامن). وبهذه الطريقة، يمكننا كتابة اختبارات واجهة المستخدم بسرعة دون القلق من إبطاء تطبيقنا. 

تشير اتجاهات السوق الخاصة بـ «Selenium» و«Puppeteer» إلى حدوث ارتفاع ملحوظ في معدل استخدامهما خلال السنوات القليلة الماضية، لا سيما منذ إصدار «Selenium 2» في عام 2014. وقد استمرت شعبية «Selenium» في الازدياد منذ ذلك الحين، مما يعني أنه من المرجح أن تستمر في النمو بنفس هذا المعدل في المستقبل المنظور. 

ما هو مستقبل اختبار الويب؟ 

يواصل مجتمع البرمجيات مفتوحة المصدر تطوير تقنيات جديدة وتحسين التقنيات الحالية دون أي مؤشر على تباطؤ هذا الزخم في المستقبل القريب. وطالما واصلنا الابتكار وابتكار أدوات جديدة، يمكننا توقع المزيد من التحسينات في تقنيات اختبار الويب.

أدوات أتمتة الويب: لماذا يجب عليك استخدامها؟ 

عندما يحين الوقت لكي يعمل أعضاء فريقك على مشاريعهم، أو عندما يحتاجون إلى المساعدة في اختبار قاعدة الكود الخاصة بهم باستخدام الاختبارات الآلية، فإن توفر أداة أتمتة مثل WebDriver سيجعل الأمور أسهل بكثير بالنسبة لهم مقارنة بتجربة الحلول اليدوية بنفسهم في كل مرة يرغبون في اختبار شيء ما يدويًّا. 

عندما يكون لديك أداة أتمتة ويب مثل WebDriver، يمكنك استخدامها لأتمتة اختباراتك وكتابتها بلغات برمجة مختلفة. كما يمكنك استخدامها للتفاعل مع المتصفح واختبار ميزات محددة في التطبيق يصعب أو يستحيل تنفيذها يدويًّا. الإمكانيات لا حصر لها!

سيُسهّل استخدام أداة الأتمتة حياتك كثيرًا، حيث سيسمح لك بكتابة اختبارات آلية لقاعدة الكود الخاصة بك دون الحاجة إلى القلق بشأن كيفية عمل الأمور خلف الكواليس. 

Selenium أم Puppeteer: أيهما أفضل لاستخراج البيانات من مواقع الويب؟

يكمن الاختلاف الرئيسي بين الاثنين في أن Puppeteer يعمل في بيئة Node.js، بينما يعمل Selenium في المتصفح.

يمكنك استخدام Puppeteer في استخراج البيانات من الويب واختبار واجهات برمجة التطبيقات (API)، لكنه لا يحظى بنفس مستوى الدعم الواسع الذي يتمتع به Selenium. كما أنه لا يحتوي على أداة تشغيل اختبارات واجهة المستخدم مدمجة، لذا ستحتاج إلى كتابة أداة خاصة بك إذا أردت استخدامه مع متصفح بدون واجهة مستخدم مثل PhantomJS أو NightwatchJS.

يحظى Selenium بدعم أكبر من المتصفحات مقارنةً بـ Puppeteer، كما أن أداة تشغيل اختبارات واجهة المستخدم الخاصة به تعمل مباشرةً مع معظم المتصفحات الشائعة (بما في ذلك Chrome). ومع ذلك، لا تزال بعض الميزات مفقودة في Selenium مقارنةً بـ Puppeteer. ومن أبرزها واجهات برمجة تطبيقات WebDriver للتفاعل مع العناصر الموجودة على الصفحة – مما يعني أنه من الصعب أتمتة التفاعلات المعقدة عبر عدة صفحات/نطاقات/تطبيقات (مثل النقر على الروابط) باستخدام هذه المكتبة وحدها. 

تتوقف قوة أعمالك على مدى وقت تشغيل البروكسي الخاص بك. انتقل إلى بروكسيات ISP الثابتة المخصصة للأعمال للحصول على سرعات مخصصة وموثوقية لا تتزعزع. أو قم بنشر بروكسيات سكنية متناوبة وحقق معدل نجاح في استخراج البيانات يبلغ 99.9%.

في هذا المقال:
توقف عن القلق بشأن جودة الوكيل الخاص بك

نضمن أن بروكسيات ISP الثابتة الخاصة بنا خالية تمامًا من أي مشاكل ومخصصة لك بنسبة 100٪. لا توجد أعباء مشتركة، بل أداء فائق فقط.

الحصول على بروكسيات ثابتة من مزودي خدمة الإنترنت

هل أنت مستعد لتجربة بروكسيات تنجز المهمة؟

يمكن إعداده في أقل من 60 ثانية. يحظى بثقة أكثر من 24,100 شركة حول العالم.

Setup in <60 seconds
يمكنك الإلغاء في أي وقت
دعم مباشر على مدار الساعة طوال أيام الأسبوع