قد تكون خوض مغامرة الزحف إلى الويب رحلةً مثيرةً ومليئةً بالتحديات في آنٍ واحد، إذ يتنقل المرء في أزقة الإنترنت المتشعبة بحثًا عن بيانات قيّمة. وفي هذا الكون الرقمي الشاسع، برز فن الزحف إلى الويب باعتباره مهارة أساسية تتيح لنا استخراج المعلومات بكفاءة، وتطوير الرؤى، وفهم شبكة الويب العالمية التي لا تكف عن التوسع.
في هذه المقالة التثقيفية، سنجوب تضاريس الزحف إلى الويب المعقدة، ونكشف الفروق بين الزحف إلى الويب واستخراج بيانات الويب، بينما نستعرض مجموعة من الاستراتيجيات والتقنيات التي ستعزز مهاراتك في الزحف إلى الويب.
من عالم مواقع JavaScript الديناميكي إلى بساطة Python القوية، سنرشدك عبر مجموعة متنوعة من النصائح والأساليب لضمان أن تكون رحلتك في الزحف إلى الويب سلسة وفعالة وخالية من العوائق.
جدول المحتويات
- الزحف إلى الويب مقابل استخراج بيانات الويب
- 4 استراتيجيات للزحف إلى الويب
- كيفية الزحف إلى مواقع JavaScript
- كيفية الزحف إلى موقع ويب باستخدام Python
- 12 نصيحة حول كيفية الزحف إلى موقع ويب دون التعرض للحظر
- شرح بالفيديو حول كيفية الزحف إلى موقع ويب
- الخاتمة
لذا، استعد وانطلق في رحلة مشوقة إلى عالم الزحف إلى الويب الآسر!
الزحف إلى الويب مقابل استخراج بيانات الويب
على الرغم من الاعتقاد الشائع بأن استخراج بيانات الويب والزحف إلى الويب هما الشيء نفسه، ورغم استخدام كليهما في التنقيب عن البيانات، فإن بينهما اختلافات جوهرية. سنستكشف هذه الاختلافات ونساعدك على تحديد النهج الأنسب لاحتياجاتك وأهداف عملك.
الاختلافات الرئيسية
ببساطة، الزحف إلى الويب هو ما تفعله محركات البحث: تتنقل عبر الويب بحثًا عن أي معلومات متاحة، وتتبع كل رابط يمكن الوصول إليه. تهدف هذه العملية العامة إلى جمع أكبر قدر ممكن من المعلومات (أو حتى كلها) من موقع ويب معين. وهذا بالضبط ما تفعله Google؛ إذ تستعرض صفحة الويب بأكملها وتفهرس جميع البيانات المتاحة.
من ناحية أخرى، يُستخدم استخراج بيانات الويب عندما ترغب في تنزيل المعلومات التي جُمعت. استخراج بيانات الويب (المعروف أيضًا باسم استخراج بيانات الويب) عملية أكثر تركيزًا. ومن خلال تخصيص الأوامر والاستفادة من وكلاء استخراج البيانات، يمكنك استخراج بيانات محددة من موقع الويب المستهدف. وبعد ذلك، يمكنك تنزيل النتائج بتنسيق مناسب، مثل JSON أو Excel.
في بعض الحالات، يمكن استخدام الزحف إلى الويب واستخراج بيانات الويب معًا لتحقيق هدف واحد، بحيث يشكلان الخطوتين الأولى والثانية في عمليتك. ومن خلال الجمع بينهما، يمكنك جمع كميات كبيرة من المعلومات من المواقع الرئيسية باستخدام زاحف، ثم استخراج البيانات المحددة التي تحتاج إليها وتنزيلها باستخدام أداة استخراج البيانات.
4 استراتيجيات للزحف إلى الويب
عمومًا، لا تزور زواحف الويب سوى جزء من صفحات الويب، وفقًا لميزانية الزحف الخاصة بها، والتي يمكن تحديدها بعوامل مثل الحد الأقصى لعدد الصفحات لكل نطاق، أو العمق، أو المدة.
توفر مواقع ويب كثيرة ملف robots.txt الذي يحدد أجزاء الموقع التي يمكن الزحف إليها وتلك المحظورة. بالإضافة إلى ذلك، يوجد ملف sitemap.xml، وهو أكثر تفصيلًا من robots.txt، إذ يرشد برامج الروبوت إلى المسارات التي ينبغي الزحف إليها، ويوفر بيانات وصفية إضافية لكل عنوان URL.
تشمل الاستخدامات الشائعة لزواحف الويب ما يلي:
- تجمع محركات البحث مثل Googlebot وBingbot وYandex Bot شيفرة HTML من جزء كبير من الويب، وتفهرس البيانات لتسهيل البحث فيها.
- تجمع أدوات تحليل تحسين محركات البحث (SEO) شيفرة HTML والبيانات الوصفية أيضًا، مثل زمن الاستجابة وحالة الاستجابة، للتعرف على الصفحات المعطلة وتتبع الروابط بين النطاقات لتحليل الروابط الخلفية.
- تزحف أدوات مراقبة الأسعار إلى مواقع التجارة الإلكترونية للعثور على صفحات المنتجات واستخراج البيانات الوصفية، ولا سيما الأسعار. ثم يُعاد فحص صفحات المنتجات هذه دوريًا.
- تحتفظ Common Crawl بـمستودع عام لبيانات الزحف إلى الويب، مثل أرشيف مايو 2022 الذي يضم 3.45 مليار صفحة ويب.
كيفية الزحف إلى مواقع JavaScript
قد يكون الزحف إلى مواقع JavaScript أصعب من الزحف إلى صفحات HTML الثابتة، لأن المحتوى غالبًا ما يُحمَّل ويُعدَّل بواسطة شيفرة JavaScript. للزحف إلى مثل هذه المواقع، تحتاج إلى استخدام متصفح دون واجهة رسومية يمكنه تنفيذ JavaScript وعرض محتوى الصفحة. ومن الخيارات الشائعة لهذه المهمة الجمع بين مكتبة Puppeteer وبيئة تشغيل Node.js.
إليك دليلًا خطوة بخطوة للزحف إلى مواقع JavaScript باستخدام Puppeteer وNode.js:
1. تثبيت Node.js
نزّل أحدث إصدار من Node.js وثبّته من الموقع الرسمي (https://nodejs.org/).
2. إنشاء دليل مشروع جديد
أنشئ دليلًا جديدًا لمشروعك وانتقل إليه باستخدام سطر الأوامر.
mkdir js-crawler cd js-crawler3. تهيئة مشروع Node.js جديد
شغّل الأمر التالي في دليل مشروعك لإنشاء ملف package.json جديد بالإعدادات الافتراضية.
npm init -y4. تثبيت Puppeteer
ثبّت Puppeteer بتشغيل الأمر التالي في دليل مشروعك
npm install puppeteer5. إنشاء ملف JavaScript جديد
أنشئ ملفًا جديدًا باسم
crawler.jsفي دليل مشروعك، وسيحتوي على الشيفرة اللازمة للزحف إلى موقع JavaScript.
6. كتابة شيفرة الزاحف
افتح
crawler.jsوأضف الشيفرة التالية:
const puppeteer = require('puppeteer');async function crawlJavaScriptWebsite(url) {
شغّل مثيلًا جديدًا من المتصفح
constbrowser =awaitpuppeteer.launch({headless:true});أنشئ صفحة جديدة في المتصفح
constpage =awaitbrowser.newPage();انتقل إلى عنوان URL المستهدف
awaitpage.goto(url, {waitUntil:'networkidle2'})استخرج البيانات من الصفحة باستخدام
evaluate()constdata =awaitpage.evaluate(() =>{
اكتب شيفرة JavaScript مخصصة هنا لاستخراج البيانات التي تحتاج إليها. لنستخرج، على سبيل المثال، جميع العناوين (عناصر h1) من الصفحة.
constheadings =Array.from(document.querySelectorAll('h1')).map(heading=>heading.textContent);return{ headings, }; });أغلق المتصفح
awaitbrowser.close();أعِد البيانات المستخرجة
returndata; }مثال على الاستخدام:
crawlJavaScriptWebsite('https://example.com/') .then(data=>console.log(data)) .catch(err=>console.error(err));استبدل عنوان URL
https://example.com/بعنوان URL للموقع المستهدف، وخصّص الدالة
page.evaluate()لاستخراج البيانات التي تحتاج إليها.
7. تشغيل الزاحف
نفّذ الأمر التالي في دليل مشروعك لتشغيل الزاحف:
node crawler.jsسيُشغّل البرنامج النصي متصفحًا دون واجهة رسومية، وينتقل إلى عنوان URL المستهدف، وينفّذ شيفرة JavaScript المحددة في الدالة
page.evaluate(). وستُسجَّل البيانات المستخرجة في وحدة التحكم.
ضع في اعتبارك أن هذا مثال أساسي على الزحف إلى موقع JavaScript. قد تحتاج في حالات الاستخدام الأكثر تقدمًا إلى التفاعل مع الصفحة أو معالجة طلبات AJAX أو تمرير الصفحة أو التعامل مع اختبارات CAPTCHA وملفات تعريف الارتباط.
كيفية الزحف إلى الويب باستخدام Python
يتضمن الزحف إلى موقع ويب باستخدام Python جلب صفحات الويب، وتحليل محتواها، واتباع الروابط إلى صفحات أخرى. في هذا الدليل، سنستخدم مكتبتين شائعتين من مكتبات Python: Requests وBeautiful Soup. يفترض هذا الدليل أن Python مثبت لديك وأن لديك معرفة أساسية ببرمجة Python.
الخطوة 1: تثبيت المكتبات المطلوبة
ثبّت مكتبتَي Requests وBeautiful Soup باستخدام pip:
pip install requests beautifulsoup4الخطوة 2: استيراد المكتبات
استورد المكتبات المطلوبة في نص Python البرمجي:
importrequestsfrombs4importBeautifulSoup
الخطوة 3: إنشاء دالة لجلب محتوى صفحة الويب
أنشئ دالة لجلب محتوى صفحة الويب باستخدام مكتبة Requests:
deffetch_page(url):response = requests.get(url)ifresponse.status_code ==200:returnresponse.textelse:print(f"Failed to fetch{url}(status code{response.status_code})")returnNone
الخطوة 4: إنشاء دالة لتحليل محتوى صفحة الويب
أنشئ دالة لتحليل محتوى صفحة الويب باستخدام مكتبة Beautiful Soup:
defparse_page(html): soup = BeautifulSoup(html,"html.parser")returnsoupالخطوة 5: إنشاء دالة لاستخراج الروابط من المحتوى المُحلَّل
أنشئ دالة لاستخراج جميع الروابط من محتوى صفحة الويب المُحلَّل:
defextract_links(soup, base_url):links = []fora_taginsoup.find_all("a"):href = a_tag.get("href")ifhrefandnothref.startswith("#"):ifnothref.startswith("http"):href = base_url + hreflinks.append(href)returnlinks
الخطوة 6: إنشاء دالة للزحف إلى الموقع
أنشئ دالة للزحف إلى الموقع بشكل تكراري:
defcrawl_website(url, max_depth=2, depth=0):ifdepth > max_depth:returnhtml = fetch_page(url)ifnothtml:returnsoup = parse_page(html)links = extract_links(soup, url)print(f"{' ' * depth}[{depth}]{url}")forlinkinlinks:crawl_website(link, max_depth, depth +1)
الخطوة 7: تشغيل أداة الزحف
شغّل أداة الزحف من خلال استدعاء الدالة
crawl_websiteمع عنوان URL المطلوب والحد الأقصى للعمق:
if__name__ =="__main__":start_url ="https://example.com/"max_depth =2crawl_website(start_url, max_depth)
يوضح هذا الدليل خطوة بخطوة كيفية الزحف إلى موقع ويب باستخدام Python. يمكنك تخصيص الدالة
crawl_websiteللتعامل مع بنى مواقع ويب محددة، أو إضافة منطق لتخزين المعلومات المستخرجة، أو تنفيذ ميزات زحف أكثر تقدمًا مثل التعامل مع robots.txt، أو تحديد معدّل الطلبات، أو تنفيذ الطلبات بالتوازي.
12 نصيحة حول كيفية زحف موقع إلكتروني دون التعرّض للحظر
هذه هي الاستراتيجيات الأساسية لزحف الويب دون مواجهة الحظر:
#1: تحقّق من بروتوكول استبعاد الروبوتات
قبل الزحف إلى موقع إلكتروني أو كشطه، تأكّد من أن الجهة المستهدفة تسمح بجمع البيانات من صفحتها. افحص ملف بروتوكول استبعاد الروبوتات (robots.txt) الخاص بالموقع والتزم بلوائحه.
حتى إذا كان الموقع يسمح بالزحف، احرص على احترامه ولا تتسبب في إلحاق الضرر به. امتثل للوائح المحددة في بروتوكول استبعاد الروبوتات، ونفّذ الزحف خلال ساعات انخفاض النشاط، وقلّل عدد الطلبات الصادرة من عنوان IP واحد، واترك فترة تأخير بين الطلبات.
ومع ذلك، حتى إذا كان الموقع يسمح بكشط الويب، فقد تواجه الحظر، لذا من الضروري اتباع خطوات إضافية أيضًا. للاطلاع على دليل أكثر شمولًا، راجع دليلنا التعليمي لكشط الويب باستخدام Python.
#2: استخدم خادمًا وكيلاً
يكاد يكون الزحف إلى الويب مستحيلًا من دون وكلاء. اختر مزوّد خدمة وكلاء موثوقًا، وحدّد ما بين وكلاء IP لمراكز البيانات والوكلاء السكنيين وفقًا لمهمتك.
يؤدي استخدام وسيط بين جهازك والموقع الإلكتروني المستهدف إلى تقليل حالات حظر عناوين IP، وضمان إخفاء الهوية، وإتاحة الوصول إلى المواقع الإلكترونية التي قد لا تكون متوفرة في منطقتك. على سبيل المثال، إذا كنت موجودًا في ألمانيا، فقد تحتاج إلى استخدام وكيل أمريكي للوصول إلى محتوى الويب في الولايات المتحدة.
للحصول على أفضل النتائج، اختر مزوّد وكلاء لديه مجموعة كبيرة من عناوين IP ونطاق واسع من المواقع.
#3: بدّل عناوين IP
عند استخدام مجموعة من الوكلاء، من الضروري تبديل عناوين IP.
إذا أرسلت عددًا كبيرًا جدًا من الطلبات من عنوان IP نفسه، فسيتعرّف الموقع الإلكتروني المستهدف عليك سريعًا باعتبارك تهديدًا ويحظر عنوان IP الخاص بك. يتيح لك تبديل الوكلاء الظهور كما لو كنت عدة مستخدمين مختلفين للإنترنت، ويقلّل احتمال تعرّضك للحظر.
تبدّل جميع الوكلاء السكنية من Oxylabs عناوين IP، ولكن إذا كنت تستخدم وكلاء مراكز البيانات، فعليك استخدام خدمة لتبديل الوكلاء. ونحن نبدّل أيضًا وكلاء IPv6 وIPv4. إذا كنت مهتمًا بالاختلافات بين IPv4 وIPv6، فاقرأ المقال الذي كتبته زميلتي Iveta.
#4: استخدم معلومات تعريف مستخدم حقيقية
يمكن لمعظم الخوادم التي تستضيف مواقع إلكترونية فحص ترويسات طلب HTTP التي تنشئها روبوتات الزحف. تحتوي ترويسة طلب HTTP هذه، والتي تُسمى معلومات تعريف المستخدم، على معلومات متنوعة تتراوح من نظام التشغيل والبرامج إلى نوع التطبيق وإصداره.
يمكن للخوادم اكتشاف معلومات تعريف المستخدم المشبوهة بسهولة. وتتضمن معلومات تعريف المستخدم الحقيقية إعدادات طلب HTTP الشائعة التي يرسلها الزوار الفعليون. لتجنّب الحظر، احرص على تخصيص معلومات تعريف المستخدم لتبدو كأنها لمستخدم فعلي.
بما أن كل طلب يُجريه متصفح ويب يتضمن معلومات تعريف المستخدم، فعليك تبديل معلومات تعريف المستخدم باستمرار.
ومن الضروري أيضًا استخدام معلومات تعريف مستخدم محدّثة وشائعة قدر الإمكان. إذا كنت ترسل طلبات بمعلومات تعريف مستخدم عمرها خمس سنوات من إصدار غير مدعوم من Firefox، فسيثير ذلك الكثير من الشكوك. يمكنك العثور على قواعد بيانات عامة على الإنترنت توضّح معلومات تعريف المستخدم الأكثر شيوعًا حاليًا. ولدينا أيضًا قاعدة بياناتنا الخاصة التي نحدّثها بانتظام، لذا تواصل معنا إذا كنت بحاجة إلى الوصول إليها.
#5: اضبط بصمتك الرقمية بشكل صحيح
أصبحت آليات مكافحة الكشط أكثر تطورًا، وتستخدم بعض المواقع بروتوكول التحكم بالنقل (TCP) أو بصمة IP لاكتشاف الروبوتات.
عند كشط الويب، يترك TCP معلمات متنوعة. ويحدّد نظام التشغيل أو الجهاز الخاص بالمستخدم النهائي هذه المعلمات. إذا كنت تتساءل عن كيفية تجنّب إدراجك في القائمة السوداء أثناء الكشط، فتأكّد من اتساق معلماتك. أو يمكنك استخدام Web Unblocker، وهو حل للوكلاء مدعوم بالذكاء الاصطناعي ويتضمن وظيفة البصمة الديناميكية. يجمع Web Unblocker بين العديد من متغيرات البصمة بطريقة تجعل البصمات تبدو عشوائية حتى عندما يحدّد بصمة واحدة هي الأفضل أداءً، كما يمكنها اجتياز اختبارات مكافحة الروبوتات.
#6: احذر من مصائد الجذب
احذر من مصائد الجذب، وهي روابط في شفرة HTML يمكن لكاشطات الويب اكتشافها لكنها غير مرئية للمستخدمين الفعليين. تُستخدم هذه المصائد لتحديد برامج زحف الويب وحظرها، إذ إن الروبوتات وحدها هي التي تتبع هذه الروابط. وعلى الرغم من أن إعداد مصائد الجذب يتطلب الكثير من العمل، فقد تستخدمها بعض الجهات المستهدفة لاكتشاف برامج زحف الويب، لذا توخّ الحذر إذا حُظر طلبك واكتُشف برنامج زحف.
#7: استخدم خدمات حل CAPTCHA
تشكل اختبارات CAPTCHA تحديًا كبيرًا لزحف الويب، إذ تتطلب من الزوار حل ألغاز للتأكد من أنهم بشر. وغالبًا ما تتضمن هذه الألغاز صورًا يصعب على أجهزة الكمبيوتر تفسيرها. لتجاوز اختبارات CAPTCHA، استخدم خدمات مخصصة لحلها أو أدوات زحف جاهزة للاستخدام، مثل أداة زحف البيانات من Oxylabs، التي تحل اختبارات CAPTCHA وتقدّم نتائج جاهزة للاستخدام. وقد يؤدي السلوك المشبوه إلى مطالبة الموقع المستهدف بحل اختبار CAPTCHA.
#8: غيّر نمط الزحف
لتجنّب الحظر، عدّل نمط تنقّل برنامج الزحف ليبدو أقل قابلية للتوقع. يمكنك إضافة نقرات وعمليات تمرير وحركات مؤشر عشوائية لمحاكاة سلوك التصفح المعتاد للمستخدم. ولاتباع أفضل الممارسات، فكّر في كيفية تصفّح المستخدم العادي للموقع وطبّق تلك المبادئ على الأداة. فعلى سبيل المثال، تُعد زيارة الصفحة الرئيسية قبل طلب الصفحات الداخلية نمطًا منطقيًا.
#9: خفّض سرعة الكاشط
للحد من خطر الحظر، خفّض سرعة الكاشط بإضافة فواصل عشوائية بين الطلبات أو ببدء أوامر انتظار قبل تنفيذ إجراء ما. وإذا كان عنوان URL خاضعًا لحدّ لمعدل الطلبات، فالتزم بقيود الموقع وخفّض سرعة الكشط لتجنّب تقييد الطلبات.
#10: نفّذ الزحف خلال ساعات انخفاض النشاط
تتحرك برامج الزحف بسرعة أكبر من المستخدمين العاديين، ويمكن أن تؤثر كثيرًا في حمل الخادم. وقد يؤثر الزحف خلال أوقات الحمل المرتفع سلبًا في تجربة المستخدم بسبب تباطؤ الخدمة. لتجنّب ذلك، نفّذ الزحف خلال ساعات انخفاض النشاط، مثل ما بعد منتصف الليل مباشرةً (وفقًا للتوقيت المحلي للخدمة)، لتقليل الحمل على الخادم.
#11: تجنّب كشط الصور
قد يكون كشط الصور محفوفًا بالمخاطر، إذ غالبًا ما تكون ملفات كبيرة الحجم وقد تكون محمية بحقوق الطبع والنشر. بالإضافة إلى ذلك، غالبًا ما تكون الصور مخفية داخل عناصر JavaScript، ما قد يزيد من تعقيد عملية الكشط ويبطئ كاشط الويب. ولاستخراج الصور من عناصر JS، يلزم اتباع إجراء كشط أكثر تعقيدًا.
#12: استخدم متصفحًا بلا واجهة رسومية
المتصفح بلا واجهة رسومية هو أداة تعمل مثل المتصفح العادي، ولكن من دون واجهة مستخدم رسومية. ويتيح كشط المحتوى الذي يُحمّل عبر عرض عناصر JavaScript. وتحتوي المتصفحات الأكثر استخدامًا، Chrome وFirefox، على أوضاع بلا واجهة رسومية يمكن استخدامها لكشط الويب دون التسبب في الحظر.
فيديو تعليمي حول كيفية الزحف إلى موقع إلكتروني
في هذا البرنامج التعليمي من Oxylabs، ستتعرف على أساسيات زحف الويب وأهميته في جمع البيانات، إلى جانب مناقشة الجوانب الأخلاقية والقانونية. ويعرض أدوات شائعة مثل Scrapy وBeautiful Soup وSelenium، ويساعدك على اختيار الأنسب لاحتياجاتك.
يساعدك البرنامج التعليمي على فهم بنية الموقع الإلكتروني، وإنشاء زاحف ويب بسيط، واستخراج المعلومات التي تحتاج إليها. كما يذكّرك باتباع الممارسات السليمة لاستخلاص البيانات من الويب، مثل احترام قواعد robots.txt وعدم تحميل الخوادم فوق طاقتها.
يساعدك الفيديو أيضًا على التعامل مع تحديات مثل جمع البيانات من الصفحات الديناميكية، والتعامل مع صفحات متعددة، وتجنب الحظر. ويوضح كيفية حفظ بياناتك وتنظيمها، ويقدم نصائح لتوسيع نطاق مشروع زحف الويب وجعله أكثر كفاءة. وأخيرًا، يذكّرك بضرورة الالتزام دائمًا بالإرشادات الأخلاقية والقانونية.
الخلاصة
مع وصولنا إلى نهاية رحلتنا المشوّقة في عالم زحف الويب، يتضح أن إتقان هذا الفن أشبه بامتلاك خريطة كنز في المشهد الشاسع والمتغير باستمرار للإنترنت. لقد تعمقنا في التفاصيل التي تميز زحف الويب عن استخلاص البيانات من الويب، واكتشفنا استراتيجيات متنوعة، وخضنا غمار عوالم مواقع JavaScript وزحف الويب باستخدام Python.
تضمن لك مجموعة النصائح والإرشادات أن تظل جهودك في زحف الويب مسؤولة وأخلاقية، وأن تتجنب المزالق والعقبات التي قد تواجهك على طول الطريق. لذا، بينما تبحر في المحيط الرقمي اللامحدود، مسلحًا بالمعرفة والحكمة المستمدتين من هذه المقالة الشاملة، تذكر أن القدرة على تسخير قوة زحف الويب سترفعك فوق منافسيك وتكشف لك الكنوز الخفية في أعماق العالم الرقمي.
