Scrapy: تجريف الويب باستخدام بايثون

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Scrapy ولماذا تحتاجه

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

الميزات الرئيسية ومزايا Scrapy

الهندسة غير المتزامنة

تم بناء Scrapy على مكتبة Twisted، مما يوفر معالجة غير متزامنة للطلبات وأداءً عاليًا عند العمل مع عدد كبير من صفحات الويب. يتيح ذلك معالجة العديد من الطلبات في وقت واحد دون حظر تنفيذ البرنامج.

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

يدعم الإطار طرقًا مختلفة لاستخراج البيانات:

  • محددات CSS لاختيار العناصر بسهولة
  • محددات XPath للاستعلامات الأكثر تعقيدًا
  • التعبيرات العادية لاستخراج البيانات بدقة
  • دعم تنسيقات JSON و XML

قابلية التوسع والأداء

صُمم Scrapy للعمل مع مشاريع من أي حجم - من البرامج النصية الصغيرة إلى الحلول الصناعية الكبيرة. تضمن آليات التخزين المؤقت المدمجة والمعالجة المتوازية وإدارة الذاكرة أداءً مستقرًا حتى عند معالجة ملايين الصفحات.

قابلية التوسع عبر middleware

يتيح نظام middleware توسيع وظائف الإطار بسهولة، عن طريق إضافة منطق مخصص لمعالجة الطلبات والاستجابات، وإدارة الرؤوس، والعمل مع خوادم الوكيل، وغير ذلك الكثير.

تثبيت وتهيئة Scrapy

تثبيت الإطار

pip install scrapy

للعمل مع تنسيقات بيانات إضافية، يُوصى بتثبيت حزم إضافية:

pip install scrapy[all]

إنشاء مشروع جديد

scrapy startproject myproject
cd myproject

إنشاء عنكبوت

scrapy genspider example example.com

هيكل مشروع Scrapy

بعد إنشاء المشروع، يتكون هيكل الدليل التالي:

myproject/
├── myproject/
│   ├── __init__.py
│   ├── items.py          # تعريف هيكل البيانات
│   ├── middlewares.py    # Middleware لمعالجة الطلبات/الاستجابات
│   ├── pipelines.py      # معالجة وحفظ البيانات
│   ├── settings.py       # إعدادات المشروع
│   └── spiders/          # دليل العناكب
│       ├── __init__.py
│       └── example.py
└── scrapy.cfg           # ملف إعدادات المشروع

وظائف الملفات الرئيسية

  • spiders/ - يحتوي على منطق التجريف واستخراج البيانات
  • items.py - يحدد هيكل البيانات المستخرجة
  • pipelines.py - يعالج ويحفظ البيانات المستخرجة
  • middlewares.py - يضبط معالجة الطلبات والاستجابات
  • settings.py - يحتوي على جميع إعدادات المشروع

إنشاء وتهيئة العنكبوت

عنكبوت أساسي

import scrapy

class ExampleSpider(scrapy.Spider):
    name = "example"
    allowed_domains = ["example.com"]
    start_urls = ["https://example.com"]

    def parse(self, response):
        # استخراج البيانات
        title = response.css('title::text').get()
        
        # إرجاع البيانات
        yield {
            'title': title,
            'url': response.url,
            'status': response.status
        }

عنكبوت متقدم مع التنقل

import scrapy

class AdvancedSpider(scrapy.Spider):
    name = "advanced"
    start_urls = ["ht                    

توصيات