انتقل إلى المحتوى

ما هو استخراج البيانات؟ دليل شامل لتخريب الويب بيثون

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

في هذا الدليل الشامل، سنغطي كل ما تحتاج لمعرفته حول استخراج البيانات واستخراج البيانات من الويب باستخدام لغة Python، بما في ذلك:

  • ما هو استخراج البيانات ولماذا هو مفيد؟
  • كيف تعمل كشط الويب؟
  • طرق وأدوات تجريف الويب لبيثون
  • بناء مكشطة ويب بايثون خطوة بخطوة
  • نصائح لتجنب الحظر والتعامل مع الأخطاء
  • الاعتبارات القانونية والأخلاقية

لنبدأ من البداية – ما هو استخراج البيانات ولماذا تريد مسح مواقع الويب؟

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

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

يحتوي الإنترنت على كمية هائلة من البيانات - مليارات من صفحات الويب المليئة بالمحتوى المنظم وغير المنظم. يعد استخراج البيانات يدويًا من مواقع الويب أمرًا شاقًا ويستغرق وقتًا طويلاً. تعمل أدوات استخراج البيانات على أتمتة هذه العملية عن طريق استرداد البيانات برمجيًا من صفحات الويب وتحويلها إلى تنسيق منظم مثل JSON أو CSV لمزيد من التحليل والاستخدام.

فيما يلي بعض الأمثلة عما يمكنك فعله بالبيانات المسروقة من الويب:

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

يتيح لك تجريف الويب استخراج كميات كبيرة من البيانات التي قد يكون من غير الممكن جمعها يدويًا. استخدامات البيانات المسروقة تكاد لا تنتهي.

كيف يعمل تجريف الويب؟

على مستوى عالٍ، إليك عملية تجريف الويب:

  1. تحدد أداة الكشط عناوين URL المراد زيارتها. يمكن أن تكون هذه قائمة محددة مسبقًا من عناوين URL أو يمكن للمكشطة أن تتبع الروابط الموجودة على الصفحات بشكل متكرر لاجتياز موقع الويب بأكمله.

  2. تقوم أداة الكشط بتنزيل محتوى HTML من كل عنوان URL باستخدام طلب HTTP.

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

  4. يتم حفظ البيانات المستخرجة في قاعدة بيانات أو ملف إخراج بتنسيق منظم مثل JSON أو CSV.

للتلخيص، تقوم أدوات استخراج بيانات الويب بأتمتة زيارة صفحات الويب، وجلب HTML، وتحليل HTML لتحديد البيانات المفيدة، وحفظ البيانات المنظمة لاستخدامها في مكان آخر.

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

طرق وأدوات تجريف الويب لبيثون

تعد Python لغة شائعة لتجريد الويب نظرًا لمجموعتها الكبيرة من مكتبات وأدوات التجريد. فيما يلي بعض الأساليب الرئيسية ومكتبات بايثون المستخدمة:

إرسال طلبات HTTP

لتنزيل صفحات HTML، تستخدم أدوات كاشطات Python مكتبات طلبات HTTP مثل:

  • الطلبات - مكتبة HTTP سهلة الاستخدام بدون أي تبعيات خارج مكتبة Python القياسية.

  • أورليب - مكتبة طلبات HTTP المدمجة في بايثون.

  • httpx – عميل HTTP كامل الميزات مع دعم لطلبات HTTP/2 والطلبات غير المتزامنة.

تحليل واستخراج البيانات

بمجرد قيامك بتنزيل صفحات HTML، ستحتاج إلى تحليل HTML لاستخراج البيانات التي تحتاجها. تشمل الأساليب الشائعة ما يلي:

  • التعبيرات العادية - يمكن استخدام أنماط Regex لاستخراج النص المطابق. مفيد لعمليات الاستخراج البسيطة.

  • شوربة جميلة - مكتبة بايثون شعبية لتحليل HTML وXML. يجعل من السهل استخراج البيانات باستخدام محددات أو شروط CSS.

  • com.lxml – مكتبة تحليل XML ذات الأداء العالي. يمكن تحليل HTML المكسور. يتكامل مع BeautifulSoup.

  • بيكويري - تم تصميم هذه المكتبة على غرار jQuery، وهي تقوم بتحليل HTML وتسمح باختيار عناصر DOM ومعالجتها.

أتمتة المتصفح

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

  • عنصر السيلينيوم – تشغيل متصفح حقيقي مثل Chrome والتحكم فيه. يمكنه التعامل مع المواقع المعقدة باستخدام JS.

  • الكاتب المسرحي - بديل أحدث للسيلينيوم لأتمتة المتصفح.

أطر تجريف الويب الكاملة

هناك أيضًا أطر كاملة الميزات توفر حلاً كاملاً للتجريد:

  • Scrapy - إطار عمل شائع للاستخلاص مزود بتزامن غير متزامن مدمج وفئات عنكبوتية وتكامل مع مكتبات Python الأخرى.

  • pyspider – نظام تجريف مفتوح المصدر مع واجهة مستخدم الويب والتكامل مع المتصفحات.

يمكن دمج هذه المكتبات معًا حسب الحاجة لإنشاء مكشطة ويب مخصصة في Python. بعد ذلك، سنتناول مثالًا باستخدام بعض هذه الأدوات.

بناء مكشطة ويب بايثون خطوة بخطوة

دعونا نرى كيف يمكننا بناء مكشطة ويب بسيطة في بايثون لاستخراج البيانات من الموقع.

سنقوم بكشط بيانات الكتاب من العلن books.toscrape.com الموقع باستخدام الطلبات وBeautifulSoup. الخطوات التي سنغطيها هي:

1. تحديد البيانات المراد كشطها

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

2. افحص بنية الصفحة

بعد ذلك، ننظر إلى بنية HTML الأساسية للصفحات باستخدام أداة فحص المتصفح. نرى عنوان الكتاب وسعره وصورته مباشرة بالداخل <li> العلامات ذات فئة "product_pod". الفئة موجودة في مسار URL للصفحة.

3. قم بتثبيت مكتبات بايثون

يمكننا الآن تثبيت مكتبات Python التي سنحتاجها – طلبات تنزيل الصفحات، و Beautiful Soup لتحليل البيانات واستخراجها من HTML:

pip install requests bs4

4. استيراد المكتبات

في برنامج Python النصي الخاص بنا، نقوم باستيراد الطلبات وBeautifulSoup:

import requests
from bs4 import BeautifulSoup

5. حدد عناوين URL لكشطها

سنبدأ بإلغاء الصفحة الأولى من فئة "الغموض":

url = ‘http://books.toscrape.com/catalogue/category/books/mystery_3/index.html‘

6. قم بتنزيل صفحة HTML

باستخدام الطلبات، يمكننا تنزيل صفحة HTML:

response = requests.get(url)
html = response.text

7. التحليل باستخدام BeautifulSoup

نقوم بإنشاء كائن BeautifulSoup من HTML:

soup = BeautifulSoup(html, ‘html.parser‘)

8. استخراج بيانات المنتج

نبذة عنا for الحلقات، نستخدم BeautifulSoup لاستخراج وطباعة بيانات المنتج من صفحة HTML:

# Extract product category from the URL
category = url.split(‘/‘)[-2]

# Extract all products in the page
products = soup.find_all(‘li‘, {‘class‘: ‘product_pod‘}) 

for product in products:

  # Extract title
  title = product.find(‘a‘).text

  # Extract price 
  price = product.find(‘p‘, {‘class‘: ‘price_color‘}).text

  # Extract image url
  img_url = product.find(‘img‘)[‘src‘]

  print(category, title, price, img_url)

9. كرر ذلك لكل صفحة

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

وهذا كل شيء! باستخدام بضعة أسطر فقط من كود Python باستخدام Requests وBeautifulSoup، يمكننا استخراج بيانات المنتج واستخراجها من موقع الويب.

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

دعونا نتناول بعد ذلك بعض النصائح لإنشاء كاشطات قوية من فئة الإنتاج.

نصائح لتقطيع الويب بشكل قوي

فيما يلي بعض أفضل الممارسات التي يجب اتباعها عند بناء الكاشطات:

التعامل مع الأخطاء وإعادة المحاولة

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

استخدام الوكلاء والتناوب

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

أضف التقييد والإيقاف المؤقت والعشوائية

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

وكلاء المستخدم والرؤوس

قم بتعيين رأس وكيل المستخدم لتقليد متصفح الويب الحقيقي حتى لا يظهر كروبوت آلي.

ذاكرة التخزين المؤقت والتخزين بشكل متزايد

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

تجريف غير متزامن

قم بكشط صفحات متعددة بشكل متزامن لزيادة السرعة من خلال الاستفادة من المكتبات غير المتزامنة مثل httpx وasyncio.

ستضمن المعالجة القوية للأخطاء والتزامن والوكلاء والتخزين المؤقت أن تقوم مكشطة البيانات الخاصة بك بجمع البيانات بسرعة وبشكل موثوق دون أن يتم حظرها.

على الرغم من إمكانية استخلاص معظم البيانات العامة الموجودة على الويب، إلا أن هناك بعض المجالات القانونية التي يجب أخذها في الاعتبار:

شروط الخدمة – تجنب تجريف المواقع التي تحظر ذلك صراحة في شروط الخدمة الخاصة بها.

قوانين حماية البيانات – لا تقم بجمع البيانات الشخصية دون الحصول على موافقة وفقًا لما تقتضيه اللوائح مثل اللائحة العامة لحماية البيانات.

حق النشر – لا تقم بنسخ أو إعادة نشر أجزاء كبيرة من المحتوى المحمي بحقوق الطبع والنشر بشكل مباشر. عادةً ما يُسمح بالعينات الصغيرة للتحليل بموجب الاستخدام العادل.

حدود معدل - احترام حدود المعدلات والقيود التي تضعها مواقع الويب على خوادمها.

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

يُسمح عادةً باستخلاص كميات متواضعة من البيانات من مواقع الويب العامة لأغراض غير تجارية، ولكن احترم دائمًا السياسات الصريحة للموقع.

تجريف ملخص أفضل الممارسات

  • استخدم مكتبات قوية مثل Requests وBeautifulSoup وSelenium لاستخراج المواقع الديناميكية
  • تنفيذ معالجة الأخطاء وإعادة المحاولة للتعامل مع تعطل الكاشطات
  • قم بتدوير الوكلاء ووكلاء المستخدم لتوزيع الطلبات وتجنب الحظر
  • قم بإضافة الخانق والتأخير والتخزين المؤقت وعدم المزامنة للتخلص بكفاءة على نطاق واسع
  • تجنب انتهاكات شروط الخدمة وانتهاكات حقوق النشر والنسخ الزائد
  • عندما يكون ذلك ممكنًا، استخدم واجهات برمجة التطبيقات الرسمية بدلاً من الاستخراج

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

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

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

الانضمام إلى محادثة

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *