تريد المساعدة؟ إليك خياراتك:","كرانش بيس","نبذة عنا","شكراً للجميع على الدعم الرائع!","روابط سريعة","برنامج الانتساب","بريميوم","ProxyScrape تجربة متميزة","مدقق الوكلاء عبر الإنترنت","أنواع الوكلاء","الدول الوكيلة","حالات استخدام الوكيل","مهم","سياسة ملفات تعريف الارتباط","إخلاء المسؤولية","سياسة الخصوصية","الشروط والأحكام","وسائل التواصل الاجتماعي","فيسبوك","لينكد إن","تويتر","كورا","برقية","الخلاف","\n © جميع الحقوق محفوظة © 2025 - ثيب بي في | بروغسترات 18 | 2812 ميكلين | بلجيكا | ضريبة القيمة المضافة BE 0749 716 760\n"]}
أصبح كشط الويب أداة أساسية للمطورين ومحللي البيانات الذين يحتاجون إلى استخراج المعلومات من الويب وتحليلها. وسواء كنت تتعقب أسعار المنتجات، أو تجمع البيانات لأغراض البحث، أو تنشئ لوحة تحكم مخصصة، فإن كشط الويب يوفر إمكانيات لا حصر لها.
إذا كنت من عشاق PHP، فإن Goutte هي مكتبة رائعة يجب أن تضعها في اعتبارك لتلبية احتياجاتك في كشط الويب. غوت خفيفة الوزن وسهلة الاستخدام وقوية، وتجمع بين قدرات عميل Guzzle's HTTP من Guzzle مع DomCrawler من Symfony من أجل كشط الويب بسلاسة وكفاءة.
سيأخذك هذا الدليل إلى أساسيات كشط الويب باستخدام PHP باستخدام Goutte - بدءًا منالتثبيت وأول نص برمجيّة إلى التقنيات المتقدمة مثل معالجة النماذج وترقيم الصفحات.
اكتسبت Goutte شعبية بين المطورين لعدد من الأسباب، مما يجعلها واحدة من مكتبات الكشط ل PHP:
سواء كنت جديدًا على PHP أو مطورًا متمرسًا، فإن Goutte يحقق توازنًا مثاليًا بين البساطة والقوة.
قبل الشروع في البرمجة، تأكد من توفر المتطلبات الأساسية اللازمة:
لتثبيت Goutte، ما عليك سوى تشغيل الأمر التالي في جهازك الطرفي:
ملحن يتطلب فاببوت/جوت
بمجرد التثبيت، تحقق من إمكانية الوصول إلى المكتبة من خلال طلب التحميل التلقائي للملحن في مشروعك:
يتطلب 'البائع/autoload.php';
أنت الآن جاهز لبدء الكشط!
لنبدأ بمثال بسيط. سنقوم بكشط عنوان صفحة ويب باستخدام Goutte. فيما يلي البرنامج النصي الأساسي:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
// Initialize Goutte Client
$client = new Client();
// Send a GET request to the target URL
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract the title of the page
$title = $crawler->filter('title')->text();
echo "Page Title: $title\n";
// Extract the titles of the first 5 books
echo "First 5 Book Titles:\n";
$crawler->filter('.product_pod h3 a')->slice(0, 5)->each(function ($node) {
echo "- " . $node->attr('title') . "\n";
});
?>
المخرجات:
عنوان الصفحة: جميع المنتجات | كتب للكشط - صندوق الرمل
أول 5 عناوين كتب:
- ضوء في العلية
- قلب المخمل
- الإرسال
- أشياء حادة
- العاقلون: تاريخ موجز للبشرية
الأمر بهذه السهولة! من خلال بضعة أسطر من التعليمات البرمجية، يمكنك جلب وعرض العنوان
لأي صفحة ويب.
بمجرد أن تتعلم كيفية جلب صفحة ويب، فإن الخطوة التالية هي استخراج بيانات محددة مثل الروابط أو المحتوى من عناصر HTML محددة.
يقوم البرنامج النصي التالي باستخراج التكريم
سمات جميع <a>
على صفحة ويب:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract all <a> tags
$links = $crawler->filter('a')->each(function ($node) {
return $node->attr('href');
});
// Print all extracted links
foreach ($links as $link) {
echo $link . "\n";
}
سيؤدي ذلك إلى إرجاع جميع الروابط التشعبية الموجودة في الصفحة.
يجعل Goutte من السهل استخراج أو تحليل البيانات من HTML باستخدام الفئة
أو بطاقة الهوية
المحددات. في هذا المثال، سنستخدم في هذا المثال كتب لكشط الموقع الإلكتروني. على وجه التحديد، سنقوم بكشط المعلومات حول كل كتاب، حيث أنهم يشتركون في نفس الفئة, المنتج_بود
. إليك كيفية ظهورها على الموقع الإلكتروني:
إليك مثال على كيفية تحقيق ذلك باستخدام Goutte:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract all <a> tags
$links = $crawler->filter('a')->each(function ($node) {
return $node->attr('href');
});
// Print all extracted links
foreach ($links as $link) {
echo $link . "\n";
}
// Extract elements with class 'product_pod'
$products = $crawler->filter('.product_pod')->each(function ($node) {
return $node->text();
});
// Print all extracted product details
foreach ($products as $product) {
echo $product . "\n";
}
والآن، دعنا نستكشف كيفية التنقل أو ترقيم الصفحات بين الصفحات. في مثال الصفحة التي نستخدمها، يوجد زر "التالي" الذي يسمح بترقيم الصفحات إلى الصفحة التالية. سنستفيد من هذا الزر لتنفيذ ترقيم الصفحات.
أولاً، سنقوم بتحديد موقع الزر باستخدام زر الفئة
التي لها قيمة التالي
. ضمن هذا العنصر، يوجد <a>
التي تحتوي على عنوان URL للصفحة التالية. من خلال استخراج عنوان URL هذا، يمكننا استخدامه لإرسال طلب جديد والانتقال بسلاسة إلى الصفحة التالية، وفيما يلي مظهر وبنية HTML لعلامة التالي
على الصفحة.
إليك ما يبدو عليه الرمز الذي يحقق ذلك:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Handle pagination using the 'next' button
while ($crawler->filter('li.next a')->count() > 0) {
$nextLink = $crawler->filter('li.next a')->attr('href');
$crawler = $client->request('GET', 'https://books.toscrape.com/catalogue/' . $nextLink);
// Extract and print the current page URL
echo "Currently on: " . $crawler->getUri() . "\n";
}
باستخدام هذا الأسلوب، يمكنك أتمتة التنقل بين الصفحات ومتابعة كشط البيانات.
Goutte قادر أيضًا على التعامل مع النماذج. لتوضيح هذه الوظيفة، سنستخدم هذا الموقع الإلكتروني، الذي يحتوي على حقل إدخال واحد، كما هو موضح في الصورة أدناه:
إليك ما يبدو عليه رمز إرسال هذا النموذج:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://www.scrapethissite.com/pages/forms/');
// Submit the search form with a query
$form = $crawler->selectButton('Search')->form();
$form['q'] = 'Canada';
$crawler = $client->submit($form);
// Extract and print the results
$results = $crawler->filter('.team')->each(function ($node) {
return $node->text();
});
foreach ($results as $result) {
echo $result . "\n";
}
يقوم هذا البرنامج النصي بملء حقل في النموذج باسم q
بالقيمة كشط الويب
وإرساله. من هنا، يمكنك استخراج المحتوى من صفحة نتائج البحث تمامًا كما في الأمثلة السابقة.
أضف دائمًا معالجة الأخطاء لإدارة المواقف غير المتوقعة مثل فشل الاتصال بالشبكة أو عناوين URL غير موجودة.
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
try {
$crawler = $client->request('GET', 'https://invalid-url-example.com');
echo "Page title: " . $crawler->filter('title')->text();
} catch (Exception $e) {
echo "An error occurred: " . $e->getMessage();
}
}
يجب دائمًا إجراء عملية تجريف الويب بطريقة أخلاقية ومسؤولة. ملف "robots.txt" هو ملف نصي بسيط تستخدمه مواقع الويب للتواصل مع برامج زحف الويب، ويحدد أجزاء الموقع التي يمكن أو لا يمكن الوصول إليها. قبل الكشط، من المهم التحقق من ملف "robots.txt" للتأكد من أنك تتبع قواعد الموقع وتحترم شروطه. يمكن أن يؤدي تجاهل هذه الإرشادات إلى مشاكل قانونية وأخلاقية، لذلك اجعل هذه الخطوة دائمًا أولوية في عملية الكشط.
اقرأ المزيد عن الروبوتات.txt
هنا.
كن مهذباً وتجنب إرسال الكثير من الطلبات في فترة زمنية قصيرة، لأن ذلك قد يثقل كاهل الخادم ويعطل أداءه بالنسبة للمستخدمين الآخرين. من الممارسات الجيدة تضمين فترة تأخير قصيرة بين كل طلب وآخر لتقليل الحمل على الخادم وضمان قدرته على التعامل مع حركة المرور بكفاءة. إن اتخاذ هذه الخطوات لا يساعد فقط في الحفاظ على استقرار الخادم، بل يُظهر أيضًا الاستخدام المسؤول والمراعي للموارد المشتركة.
سكون(1)؛ // انتظر ثانية واحدة بين الطلبات
يعد كشط الويب أداة قوية لجمع البيانات بكفاءة، ولكنه يتطلب نهجًا مسؤولاً ومدروسًا لتجنب المزالق الشائعة وضمان الاستخدام الأخلاقي. من خلال الالتزام بأفضل الممارسات مثل احترام شروط خدمة الموقع الإلكتروني، وتنفيذ التأخير المناسب بين الطلبات، واستخدام أدوات قادرة على التعامل مع المحتوى الديناميكي، يمكنك إنشاء مكشطة تعمل بفعالية مع تقليل التأثير على الخوادم. وبالإضافة إلى ذلك، فإن التحقق من شهادات HTTPS ومراعاة الاعتبارات الأمنية سيحمي مكشطة الويب الخاصة بك وأي بيانات تجمعها. مع التخطيط والتنفيذ المناسبين، يمكن أن يصبح كشط الويب موردًا لا يقدر بثمن للبحث والتحليل والابتكار.