كيفية كشط غلاف الويب

هل من الجيد تعلم كيفية استخراج بيانات الويب؟ إذا كنت ترغب في توفير مئات الساعات من العمل، فعليك فعل ذلك. كما أنها مهارة رائعة للمبرمجين.

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

لقد قمنا بإعداد دليل للمبتدئين يتضمن كل الأساسيات، من فهم بنية موقع الويب، والمرور بالتقنيات الأساسية وحتى مفاهيم كشط الويب المتقدمة، حتى تتمكن من أن تصبح محترفًا.

فهم بنية موقع الويب

قبل الغوص في عملية الكشط، عليك أن تفهم كيفية هيكلة مواقع الويب.

أولاً، يتم إنشاء مواقع الويب باستخدام الكود. والأكثر شيوعًا هي HTML (لغة ترميز النص التشعبي) وCSS (ورقة الأنماط المتتالية) وJavaScript.

HTML هو الأكثر شيوعًا لسهولة استخدامه. فهو يُحدد بنية ومحتوى صفحات الويب باستخدام عناصر تُمثلها العلامات.

على سبيل المثال،

  • <h1> للعناوين،
  • <p> للفقرات،

على سبيل المثال لا الحصر (وهناك الكثير).

فيما يلي مثال لكيفية ظهور كود HTML:

<html>
  <head>
	<title>Example Website</title>
  </head>
  <body>
	<h1>Welcome to my website!</h1>
	<p>This is a paragraph of text.</p>
	<ul>
  	<li>Item 1</li>
  	<li>Item 2</li>
  	<li>Item 3</li>
	</ul>
  </body>
</html>
  </body>
</html>

وأخيرًا، يحدد CSS تصميم عناصر HTML، بينما يتولى JavaScript مسؤولية السلوك الديناميكي لمواقع الويب.

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

إعداد بيئة التطوير الخاصة بك

حسنًا، الآن بعد أن أصبحت لديك فكرة عن بنية موقع الويب الخاص بك، يمكنك البدء في إعداد بيئة التطوير الخاصة بك.

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

وهي تسمح بحل مهمة محددة تتعلق بالكشط، مثل ما يلي:

  • Requests: يجعل من الأسهل إنشاء طلبات HTTP إلى موقع الويب المستهدف.
  • BeautifulSoupتُستخدم هذه المكتبة لتحليل مستندات HTML وXML. ولكن، لحظة، ما هو التحليل؟ إنه عملية تحليل البيانات المنظمة وتفسيرها.
  • Selenium:أتمتة متصفحات الويب لأداء المهام التي تحاكي التفاعل البشري.
  • Scrapy:يمكن استخدام هذا الإطار الشامل لمهام مختلفة، مثل الزحف على الويب (البحث عن عناوين URL لاستخراج البيانات)، واستخراج البيانات، والاختبار الآلي.

كيفية البدء؟

  1. إعداد البيئة: قم بتنزيل أحدث إصدار من Python وقم بتثبيته. الأمر بهذه السهولة.
  2. إنشاء بيئة افتراضية: أنشئ بيئة افتراضية لعزل تبعيات مشروعك. افتح نافذة طرفية وشغّل الأوامر التالية:
python -m venv myenv
source myenv/bin/activate  # For Unix/Linux
myenv\Scripts\activate.bat  # For Windows

3. قم بتثبيت المكتبات والأدوات: أوصيك بتثبيت Requests وSelenium وBeautifulSoup وScrapy للبدء. يمكنك تثبيتها باستخدام "pip install"الأمر، فقط افتح المحطة الطرفية وقم بتشغيل الأمر التالي:

pip install requests beautifulsoup4 scrapy selenium

أساسيات كشط البيانات من الويب 101: الأخلاقيات وأفضل الممارسات

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

يعرف كل كاشط هذا إلى حد ما، ولكن يتعين على المبتدئين فهم الإرشادات التالية حتى يتمكنوا من البقاء ضمن الحدود:

  • احترم ملف Robots.txt: أول قاعدة في استخراج البيانات هي احترام ملف Robots.txt. إنه ملف نصي موجود في كل موقع، يُعلم الجميع تقريبًا ما يُمكن استخراجه وما لا يُمكن.
  • احترم شروط خدمة الموقع: تحقق من شروط خدمة الموقع لمعرفة ما إذا كان يُسمح بكشط الويب.
  • الحد من تكرار عمليات الكشط والتأثير على الخوادم: تجنب تقديم عدد كبير جدًا من الطلبات في فترة زمنية قصيرة. وتجنب أيضًا تحميل الخادم بشكل زائد عن الحد من خلال تنفيذ فترات تأخير بين الطلبات.
  • استخدم واجهات برمجة التطبيقات (إن وجدت): قبل استخراج البيانات، تحقق مما إذا كان الموقع يوفر واجهة برمجة تطبيقات للوصول إلى البيانات. دعني أذكر لك بعض المرات التي عملت فيها على أداة استخراج بيانات لأكتشف أن واجهة برمجة التطبيقات متوفرة، لكنني لم أكلف نفسي عناء التحقق. استخدام واجهة برمجة التطبيقات أسهل بكثير (صدقني) لأنه يوفر بيانات منظمة.
  • الاعتبارات القانونية: راجع القوانين للتأكد من عدم انتهاكك أي حقوق ملكية فكرية أو أي قاعدة. إذا لم تكن متأكدًا، فمن الأفضل استشارة محامٍ أولًا.

البدء في استخدام Web Scraping: التقنيات الأساسية

حسنًا، انتهينا من النظريات والمفاهيم، لنبدأ العمل. أول شيء ستتعلمه هو كيفية إرسال طلبات HTTP.

إرسال طلبات HTTP (GET، POST) باستخدام مكتبة طلبات Python

سنستخدم هنا مكتبة Requests في بايثون. لنلقِ نظرة على مثال:

import requests

url = 'https://example.com'
response = requests.get(url)
html_content = response.text

هنا يمكنك تحديد عنوان URL للصفحة التي تريد استخراجها. requests.get () نحن نرسل طلب GET ويتم تخزين محتوى HTML الخاص بالصفحة في متغير html_content.

تحليل HTML باستخدام BeautifulSoup

بمجرد حصولك على محتوى HTML، يمكنك تحليله باستخدام مكتبة BeautifulSoup لاستخراج بيانات محددة. إليك مثال:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_content, 'html.parser')
title = soup.find('h1').text
paragraphs = soup.find_all('p')

في هذا الكود، نقوم بإنشاء كائن BeautifulSoup عن طريق تمرير محتوى HTML وتحديد المحلل (في هذه الحالة، 'html.parser'). يمكننا بعد ذلك استخدام طرق مثل find() و find_all() لتحديد عناصر محددة استنادًا إلى علاماتها أو سماتها.

استخراج البيانات باستخدام محددات CSS والطرق مثل find() و find_all()

توفر محددات CSS طريقة فعالة لتحديد موقع العناصر على صفحة الويب. يتيح لك BeautifulSoup استخدام محددات CSS لاستخراج البيانات.

وهنا مثال:

links = soup.select('a.external-link')
for link in links:
href = link['href']
text = link.text
print(f"Link: {href}, Text: {text}")

في هذا الكود نستخدم select() طريقة للعثور على جميع العلامات التي تحتوي على الفئة "external-link"يمكننا بعد ذلك تكرار العناصر المحددة واستخراج السمات أو النص المطلوب.

حفظ البيانات المجمعة في الملفات

بعد استخراج البيانات المطلوبة، يمكنك حفظها في ملف لمزيد من التحليل أو المعالجة. إليك مثال على حفظ البيانات في ملف CSV:

import csv

data = [
['Name', 'Age', 'City'],
['John', '25', 'New York'],
['Alice', '30', 'London'],
]

with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)

في هذا الكود نقوم بتعريف قائمة من صفوف البيانات، ونفتح ملف باسم "output.csv"في وضع الكتابة، قم بإنشاء كائن كاتب CSV، واكتب صفوف البيانات في الملف.

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

لا تقلق، فمن الممكن (تقريبًا) سرقة كل موقع إذا كنت تعرف التقنيات الصحيحة وتملك الأدوات المناسبة.

التعامل مع الترقيم الصفحي والصفحات المتعددة

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

تحقق من التقنيات التالية:

  1. تحديد أنماط الترقيم في عناوين URL: ابحث عن الأنماط في بنية عنوان URL التي تشير إلى رقم الصفحة. على سبيل المثال، عناوين URL مثل https://example.com/page/1, https://example.com/page/2، وما إلى ذلك، اتبع نمط ترقيم واضحًا.
  2. تعديل حلقة الكشط: اضبط حلقة الكشط لتتكرر على نطاق أرقام الصفحات. على سبيل المثال:
for page in range(1, 11):
url = f"https://example.com/page/{page}"
# Scrape data from each page

في هذا الكود، نقوم بتكرار أرقام الصفحات من 1 إلى 10 وإنشاء عنوان URL لكل صفحة بشكل ديناميكي.

3. الكشف عن وجود "Next"الزر ": تستخدم بعض المواقع الإلكترونية زر "Next"زر "" بدلاً من أرقام الصفحات الصريحة. في مثل هذه الحالات، يمكنك التحقق من وجود ""Next"اضغط على الزر واستمر في الكشط حتى يختفي.

التعامل مع المواقع الديناميكية وتقديم JavaScript

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

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

هذا هو الوقت الذي يتعين عليك فيه استخدام أدوات مثل Selenium.

Selenium هي أداة قوية لأتمتة متصفحات الويب. فهي تتيح لك التفاعل مع صفحات الويب وملء النماذج والنقر على الأزرار واستخراج البيانات من المحتوى المعروض ديناميكيًا.

إعداد السيلينيوم

إذا كنت قد قمت بالفعل بتثبيت Selenium، فإن الخطوة التالية التي يتعين عليك القيام بها هي تثبيت برنامج تشغيل ويب للمتصفح المفضل لديك. على سبيل المثال، ChromeDriver لمتصفح Google Chrome.

فيما يلي مثال لكيفية استخدامه:

from selenium import webdriver

driver = webdriver.Chrome()  # Assumes ChromeDriver is installed and in PATH
driver.get('https://example.com')

# Perform actions and extract data
title = driver.find_element_by_tag_name('h1').text

driver.quit()

في هذا الكود، نقوم بإنشاء مثيل لبرنامج تشغيل الويب Chrome، وننتقل إلى عنوان URL محدد باستخدام driver.get()، ثم قم بتنفيذ الإجراءات واستخراج البيانات باستخدام طرق Selenium مثل find_element_by_tag_name().

في انتظار تحميل العناصر

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

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)<br>element = wait.until(EC.presence_of_element_located((By.ID, 'my-element-id')))

في هذا الكود، نقوم بإنشاء كائن WebDriverWait مع مهلة زمنية تبلغ 10 ثوانٍ. ثم نستخدم طريقة until() للانتظار حتى ظهور عنصر بمعرف معين.

بدائل السيلينيوم

على الرغم من اعتقاد العديد من المستخدمين أن Selenium هو أفضل ما يمكنك استخدامه للمواقع الديناميكية، إلا أنه يتعين عليك استكشاف البدائل لمعرفة ما يناسبك بشكل أفضل.

قد يكون Scrapy-Splash خيارًا مناسبًا. فهو يدمج متصفحًا بدون واجهة رسومية مع إطار عمل Scrapy. يسمح هذا باستخراج البيانات بكفاءة أكبر بفضل البنية التحتية الشبكية غير المحظورة لـ Scrapy وميزات Splash المتقدمة لعرض صفحات الويب الديناميكية بسرعة.

Requests-html هو بديل آخر، حيث إنه يوسع وظائف مكتبة الطلبات عن طريق إضافة دعم لعرض JavaScript والتفاعل مع صفحات الويب.

تقنيات متقدمة لاستخراج بيانات الويب

عندما تبدأ في إحراز تقدم، ستلاحظ أنك تتعامل مع بعض سيناريوهات الكشط، ولكنك تواجه أيضًا سيناريوهات معقدة تتطلب تقنيات أكثر تقدمًا.

التعامل مع المصادقة وملفات تعريف الارتباط

تتطلب بعض مواقع الويب المصادقة أو استخدام ملفات تعريف الارتباط لإدارة جلسات المستخدم. يمكنك التعامل مع المصادقة عن طريق إرسال بيانات اعتماد تسجيل الدخول مع طلباتك وإدارة ملفات تعريف الارتباط باستخدام مكتبات مثل requests أو http.cookiejar.

تجنب الكشف والحظر

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

تخزين البيانات في قواعد البيانات

بدلاً من حفظ البيانات المجمعة في ملفات، يمكنك تخزينها في قواعد بيانات لتخزينها واسترجاعها بكفاءة أكبر. تتضمن الخيارات الشائعة قواعد بيانات SQL مثل MySQL وPostgreSQL، وقواعد بيانات NoSQL مثل MongoDB.

استخراج واجهات برمجة التطبيقات ومعالجة بيانات JSON

مرحبًا! لقد وجدتَ واجهة برمجة التطبيقات. لكنها بصيغة JSON. ماذا يمكنكَ فعله؟ يمكنكَ استخدام مكتبات مثل requests لإجراء طلبات API وتحليل استجابات JSON باستخدام وحدة json في Python.

الكشط المتوازي وغير المتزامن

لتسريع عملية الكشط، يمكنك الاستفادة من تقنيات المعالجة المتوازية والبرمجة غير المتزامنة. يمكن أن تساعدك المكتبات مثل المعالجة المتعددة والترابط والبرمجة غير المتزامنة في بايثون في تحقيق ذلك.

جمع كل شيء معًا: مشاريع استخراج البيانات من الويب في العالم الحقيقي

كمبتدئ، عندما بدأتُ تدريبي على الكشط، شعرتُ أنني أعرف تمامًا ما عليّ فعله، حتى اضطررتُ إلى القيام به. لا جدوى من القراءة فقط، بل عليكَ اختبار مهاراتك بالممارسة.

وهل هناك طريقة أفضل للقيام بذلك من العمل على مشاريع حقيقية؟

دعونا نلقي نظرة على بعض الأمثلة مع عملية خطوة بخطوة:

المثال 1: استخراج مقالات الأخبار وتحليل المشاعر

  1. تخطيط عملية الكشط:
    • حدد موقع الأخبار الذي تريد استخراج البيانات منه
    • تحديد هيكل المقالات (العنوان، المحتوى، التاريخ، الخ.)
    • تخطيط تنسيق تخزين البيانات (على سبيل المثال، CSV، قاعدة البيانات)
  2. تنفيذ الكاشطة:
    • استخدم الطلبات لجلب محتوى HTML لموقع الأخبار
    • تحليل HTML باستخدام BeautifulSoup لاستخراج معلومات المقالة
    • التعامل مع الترقيم الصفحي والتنقل عبر صفحات متعددة
    • قم بتخزين البيانات المجمعة بالتنسيق المختار
  3. تحليل وتصور البيانات المجمعة:
    • قم بإجراء تحليل المشاعر على محتوى المقالة باستخدام مكتبات مثل NLTK أو TextBlob
    • تصور درجات المشاعر باستخدام مكتبات مثل Matplotlib أو Plotly
    • تحديد الاتجاهات والأنماط في مشاعر الأخبار بمرور الوقت

المثال 2: بناء أداة لمراقبة الأسعار

  1. استخراج معلومات المنتج من مواقع التجارة الإلكترونية:
    • تحديد مواقع التجارة الإلكترونية التي سيتم استخراج البيانات منها
    • تحديد هيكل معلومات المنتج (الاسم، السعر، التوفر، الخ.)
    • استخدم تقنيات كشط الويب لاستخراج بيانات المنتج من مواقع ويب متعددة
  2. إعداد التنبيهات والإشعارات:
    • تحديد حدود الأسعار أو معايير التوفر لكل منتج
    • تنفيذ آلية لمقارنة الأسعار المجمعة مع الحدود المحددة
    • إعداد إشعارات البريد الإلكتروني أو الرسائل القصيرة لتنبيه المستخدمين عند انخفاض الأسعار أو توفر المنتجات
  3. نشر الكاشطة على السحابة:
    • اختر منصة سحابية (على سبيل المثال، AWS، Google Cloud، Heroku)
    • قم بتكوين البيئة والتبعيات اللازمة
    • جدولة الكاشطة لتشغيلها على فترات منتظمة
    • قم بتخزين البيانات المجمعة في قاعدة بيانات سحابية لسهولة الوصول إليها ومراقبتها

أطر وأدوات كشط الويب

أعلم أن مصطلحي "الإطار" و"المكتبة" يُستخدمان بالتبادل، لكنهما يعنيان أشياء مختلفة، ويُستخدمان لأغراض مختلفة.

باستخدام مكتبات مثل Request أو BeautifulSoup، يمكنك إنشاء أدوات استخراج بيانات الويب من الصفر. ومع ذلك، باستخدام الأطر، يمكنك تبسيط العملية لأنها عبارة عن مجموعة من الأدوات والمكتبات.

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

بعض الخيارات الأكثر شعبية هي:

Scrapy

Scrapy هو إطار عمل للغة Python مع نظام بيئي كامل لبناء أدوات كشط ويب قابلة للتطوير وفعالة. ميزاته الرئيسية هي:

  • سريع حسب التصميم.
  • لا حاجة لإضافة كود لإنشاء ملفات CSV وJSON وغيرها.
  • دعم XPath وCSS Selectors.
  • نظام بيئي تمديدي رائع، مثل دعم البرامج الوسيطة.
  • التكامل مع خطوط أنابيب العناصر لمعالجة البيانات وتخزينها

PySpider

PySpider هو أيضًا إطار عمل لبايثون، ولكن بخلاف Scrapy، فهو متوافق مع جافا سكريبت، وهذه هي ميزته الأقوى. كما أنه رائع للمبتدئين. من أهم ميزاته:

  • دعم عرض JavaScript باستخدام PhantomJS أو Puppeteer
  • قائمة مهام مدمجة ومجدولة
  • التكامل مع قواعد البيانات وطوابير الرسائل
  • يدعم التزامن

أدوات وخدمات كشط الويب

بالإضافة إلى الأطر، هناك بعض الأدوات والخدمات التي تساعدك على تسهيل عملية الكشط. وأفضل ما في الأمر هو أنها تتطلب الحد الأدنى من الترميز. ومن بين الخيارات المتاحة:

  • Octoparse:أداة كشط ويب تعتمد على السحابة مع واجهة النقر والنقر لاستخراج البيانات من مواقع الويب.
  • ParseHub:تطبيق سطح مكتب يسمح لك بإنشاء كاشطات ويب من خلال تحديد العناصر بصريًا على صفحة الويب.
  • Import.io:منصة تعتمد على الويب توفر أدوات لاستخراج البيانات من مواقع الويب وواجهات برمجة التطبيقات.

تلخيص أساسيات استخراج البيانات من الويب

في هذا الدليل، قمنا بتغطية أساسيات كشط الويب على نطاق واسع، مثل فهم بنية موقع الويب، والاعتبارات الأخلاقية، والتقنيات الأساسية والمتقدمة، والأدوات والأطر الإضافية.

أنت جاهز للبدء، ولكن فكر في توسيع نطاق معرفتك من خلال قراءة الموارد الإضافية، مثل الوثائق الرسمية للمكتبات والأطر، ودروس كشط الويب.

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

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

الكسندر شميدت

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

اختر واشترِ وكيل (بروكسي)

اختر النوع والموقع والكمية لعرض الأسعار فورًا.

اختر واشترِ وكيل (بروكسي)