شعار proxyscrape داكن

مقدمة في كشط الويب باستخدام Node.js (جافا سكريبت)

الكشط, Jan-08-20225 دقائق للقراءة

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

جدول المحتويات

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

  • البحث عن البيانات الشائعة على مواقع التواصل الاجتماعي
  • جمع البيانات من موقع إلكتروني آخر لاستخدامها على موقعك الإلكتروني الخاص بك
  • استخراج عناوين البريد الإلكتروني من المواقع التي تنشر رسائل البريد الإلكتروني العامة
  • البحث في المتاجر عبر الإنترنت عن صور المنتجات وبيانات المبيعات

سوف تتعلم كيفية القيام بكشط الويب باستخدام Node.js. لكن أولاً، سنلقي نظرة على ماهية Node.js. إنها منصة مفتوحة المصدر من جانب الخادم لتطوير تطبيقات من جانب الخادم والشبكات. تتميز مكتبتها بسرعة كبيرة في تنفيذ التعليمات البرمجية لأن تطبيقاتها لا تقوم بتخزين أي بيانات. فهي ببساطة تقوم بإخراج البيانات في أجزاء. فيما يلي بعض المجالات التي يمكننا فيها استخدام Node.js.

  • تطبيقات تدفق البيانات
  • تطبيقات الصفحة الواحدة
  • التطبيقات المرتبطة بالإدخال/الإخراج
  • تطبيقات الوقت الحقيقي كثيفة البيانات في الوقت الحقيقي

لماذا نستخدم Node.js لكشط الويب؟

فيما يلي أسباب استخدام Node.js لكشط الويب.

سهل التعلم - جافا سكريبت هي لغة برمجة شائعة يستخدمها مطورو الواجهة الأمامية. يمكنهم تعلم واستخدام Node.js بسرعة في الواجهة الخلفية لأنها لغة جافا سكريبت بسيطة. لذلك، لا يتعين عليهم بذل جهد إضافي في تعلم Node.js.

لغة برمجة واحدة - يمكنك استخدام Node.js لكتابة تطبيقات من جانب الخادم بلغة جافا سكريبت. باختصار، يستخدم مطورو Node.js لغة جافا سكريبت لكتابة تطبيقات الويب الأمامية والخلفية على حد سواء. لا يحتاجون إلى استخدام أي لغة برمجة أخرى من جانب الخادم. وبالتالي، يمكنهم نشر تطبيقات الويب بسهولة لأن جميع متصفحات الويب تقريبًا تدعم Javascript. 

قابلية التوسع - يمكن لمطوري Node.js توسيع نطاق التطبيقات بسهولة في الاتجاهين الأفقي والرأسي. يمكنهم إضافة عقد إضافية إلى الأنظمة الحالية لتوسيع نطاق التطبيقات أفقياً. يمكنهم توسيع نطاق التطبيقات عموديًا عن طريق إضافة موارد إضافية إلى العقد الفردية. 

أداء عالٍ - يستخدم Node.js محرك V8 Javascript من Google لتفسير شيفرة جافا سكريبت حيث يقوم بتجميعها مباشرةً في كود الآلة. وبالتالي، يمكنك تنفيذ الكود بفعالية باستخدام هذا المحرك. 

التخزين المؤقت - يمكن للمطورين أيضًا تخزين الوحدات المفردة مؤقتًا باستخدام بيئة وقت تشغيل Node.js مفتوحة المصدر. يسمح التخزين المؤقت للتطبيقات بتحميل صفحات الويب بشكل أسرع، بحيث لا يضطر المطورون إلى إعادة استخدام الأكواد.   

كشط الويب باستخدام Node.js

لكشط الويب باستخدام Node.js، سنستخدم وحدتي npm التاليتين.

شيريو - هي تقنية جافا سكريبت تُستخدم لاستخراج البيانات من المواقع الإلكترونية. تساعد على تحديد عناصر DOM وتحريرها وعرضها.

طلب الوعد - هو عميل HTTP بسيط يمكنك استخدامه لإجراء مكالمات HTTP سريعة وسهلة.

إعداد المشروع

عليك إنشاء مجلد مشروع جديد. قم بإنشاء ملف index.js داخل هذا المجلد. ثم عليك تثبيت التبعيات. لهذا، افتح سطر الأوامر واكتب الأمر التالي. 

تثبيت npm -حفظ الطلب-حفظ الطلب-وعد الطلب-مبهج

يجب عليك أن تطلب وعد الطلب والبهجة في ملف index.js الخاص بك باستخدام الكود أدناه.

const rp = يتطلب('طلب-وعد');
const cheerio = يتطلب('cheerio');

طلب التعيين

أنت تعلم أن طلب الوعد هو "طلب" عميل مع دعم الوعد. بمعنى آخر، يقبل كائنًا كمدخل ويعيد وعدًا. 

const options = {
 uri: `https://www.yourURLhere.com`,
 transform: function (body) {
   return cheerio.load(body);
 }
};

في الشيفرة أعلاه، يجب أن يقوم كائن الخيارات بأمرين.

  • من خلال تمرير عنوان URL، تريد كشط
  • قم بتحميل HTML الذي تم إرجاعه باستخدام cheerio حتى تتمكن من استخدامه.

مفتاح uri في الكود هو الموقع الإلكتروني الذي تريد كشطه.

يقوم مفتاح التحويل بتحميل الجسم الذي تم إرجاعه إلى شيريو باستخدام وعد الطلب قبل إعادته إلينا.

تقديم الطلب

يمكنك تقديم طلبك باستخدام الرمز أدناه.

rp(OPTIONS)
   .then(function (data) {
       // REQUEST SUCCEEDED: DO SOMETHING
   })
   .catch(function (err) {
       // REQUEST FAILED: ERROR OF SOME KIND
   });

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

والآن، ننشئ نسختنا الخاصة من الشيفرة التي نستخدم فيها دوال الأسهم كما هو موضح أدناه.

rp(options)
 .then(($) => {
   console.log($);
 })
 .catch((err) => {
   console.log(err);
 });

عليك استبدال العنصر النائب uri بالموقع الإلكتروني الذي تريد كشطه. يمكنك بعد ذلك فتح وحدة التحكم الخاصة بك وكتابة ما يلي في ملف index.js.

{ [Function: initialize]
 fn:
  initialize {
    constructor: [Circular],
    _originalRoot:
     { type: 'root',
       name: 'root',
       namespace: 'http://www.w3.org/1999/xhtml',
       attribs: {},
       ...

هذه هي الطريقة التي يمكنك بها إجراء أول كشط باستخدام Node.js. إليك الكود الكامل الذي قمنا به حتى الآن.

const rp = require('request-promise');
const cheerio = require('cheerio');
const options = {
  uri: `https://www.google.com`,
  transform: function (body) {
    return cheerio.load(body);
  }
};

rp(options)
  .then(($) => {
    console.log($);
  })
  .catch((err) => {
    console.log(err);
  });

استخدام البيانات

يمكنك استخدام cheerio لاستخراج البيانات التي تريدها. تطبيق محدد التشيريو هو تقريبًا نفس تطبيق محدد jQuery. يمكنك استخدام طريقة المحدد لاستعراض وتحديد العناصر في المستند. يمكنك أيضًا استخدامه للحصول على البيانات وتعيينها. على سبيل المثال، تريد كشط HTML التالي من موقع ويب.

 id="مدن">
 class="كبير">أوروبا
 id="متوسط">تركيا
 class="صغير">سالم
  • صغير">سالم
  • يمكننا استخدام "#" لتحديد المعرفات، " # " لتحديد الفئات . يمكن تحديد العناصر بأسماء وسومها كما هو موضح أدناه.

    $('.large').text()
    // أوروبا
    $('#متوسط').text()
    // تركيا
    $('li[class=small]).html()

    يمكننا استخدام دالة كل () للتكرار من خلال عناصر متعددة. يمكننا إرجاع النص الداخلي لعنصر القائمة باستخدام نفس شيفرة HTML الموضحة أعلاه.

    $('li').each(function(i, elem) {
     cities[i] = $(this).text();
    });

    هكذا يمكنك كشط البيانات من المواقع الإلكترونية باستخدام Node.js. يمكنك أيضًا استخدام طرق إضافية لاستخراج بيانات العناصر التابعة لقائمة أو HTML لموقع ويب.

    أهمية استخدام Node.js مع البروكسيات

    أنت تعلم أن الوكلاء يعملون كوسطاء بين العملاء الذين يطلبون الموارد والخادم الذي يوفر الموارد. هناك ثلاثة أنواع مختلفة من الوكلاء، كما هو موضح أدناه.

    وكيل سكني - يحتوي هذا الوكيل على عناوين IP من مزود خدمة الإنترنت المحلي (ISP)، لذلك لا يمكن للموقع المستهدف تحديد ما إذا كان شخصًا حقيقيًا أو مكشطة تتصفح الموقع. 

    بروكسي مركز البيانات - هذا النوع من البروكسي يكون من مزود خدمة سحابية ويستخدمه عدد كبير من الأشخاص لأنه أرخص من البروكسيات السكنية.

    بروكسي الهاتف المحمول - وكلاء الهاتف المحمول هم عناوين IP للأجهزة المحمولة الخاصة ويعملون تماماً مثل الوكلاء المقيمين. يتم توفيرها من قبل مشغلي شبكات الهاتف المحمول وهي مكلفة للغاية. 

    يمكنك استخدام وكيل لكشط الويب باستخدام وحدة طلبات بايثون. أولاً، عليك استيراد وحدة الطلبات. بعد ذلك، عليك إنشاء مجموعة من البروكسيات وتكرارها. يمكنك استخدام requests.get() لإرسال طلب GET عن طريق تمرير وكيل كمعامل لعنوان URL، كما هو موضح أدناه.

    import requests
    proxy = 'http://114.121.248.251:8080'
    url = 'https://ipecho.net/plain'
    # Sending a GET request to the url and
    # passing the proxy as a parameter.
    page = requests.get(url,
                       proxies={"http": proxy, "https": proxy})
     # Printing the content of the requested url.
    print(page.text)

    ستحصل على الناتج أدناه.

    خاتمة حول كشط الويب باستخدام Node.js

    ناقشنا حتى الآن أنه يمكنك استخراج البيانات المنظمة من مواقع الويب باستخدام طريقة آلية تسمى كشط الويب. يمكنك كشط مواقع الويب باستخدام لغات مختلفة، ولكن في هذه المقالة، تعلمنا كيفية استخدام Node.js لجمع البيانات من مواقع الويب. كل ما علينا فعله هو إضافة كود في ملف index.js في مجلد المشروع. بعد إعداد المشروع، يمكننا تعيين وإجراء الطلب لاستخراج البيانات. علاوة على ذلك، يمكننا استخدام البيانات لأغراض مختلفة. أنت تعلم أنه ليس من الآمن كشط المواقع الإلكترونية. لذلك، عليك استخدام الوكلاء لجمع البيانات من موقع الويب الذي تريده. يمكنك استخدام البروكسيات السكنية أو مراكز البيانات، ولكن يفضل استخدام البروكسيات السكنية لأنها سريعة ولا يمكن اكتشافها بسهولة.