Pyppeteer: التحكم في المتصفح عبر Puppeteer بلغة بايثون

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

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

ابدأ الدورة

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

Pyppeteer هي مكتبة بايثون قوية، تمثل نسخة غير متزامنة من مكتبة Puppeteer الشهيرة من Google. تمنح المطورين تحكمًا كاملاً في متصفح Chromium/Chrome عبر كود بايثون، مما يجعلها أداة لا غنى عنها لأتمتة مهام الويب.

على عكس أدوات تجريف الويب التقليدية، يعمل Pyppeteer مع متصفح كامل، مما يسمح بتنفيذ كود JavaScript والتفاعل مع المحتوى الديناميكي ومعالجة تطبيقات الويب الحديثة المبنية على React وVue وAngular وغيرها من الأطر.

الميزات والفوائد الرئيسية

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

تم بناء Pyppeteer على أساس asyncio، مما يوفر أداءً عاليًا عند العمل مع مهام متعددة. هذا مهم بشكل خاص عند استخراج البيانات بكميات كبيرة أو أتمتة عدد كبير من صفحات الويب.

دعم كامل لـ JavaScript

تتيح المكتبة تنفيذ أي كود JavaScript مباشرة في المتصفح، والحصول على نتائج التنفيذ، والتلاعب بعناصر DOM في الوقت الفعلي.

وضعي Headless وGUI

يمكن لـ Pyppeteer العمل في الوضع المخفي (headless) للأتمتة، أو في الوضع العادي بواجهة رسومية للتصحيح والعرض.

إنشاء المستندات

الدعم المدمج لإنشاء لقطات الشاشة وملفات PDF يجعل المكتبة مثالية لإنشاء التقارير والوثائق.

مقارنة مفصلة مع الأدوات الشائعة

المعيار Pyppeteer Selenium Puppeteer (JS) Playwright
لغة البرمجة Python Python/Java/C# JavaScript Python/JS/Java/C#
عدم التزامن نعم (asyncio) جزئي نعم نعم
التحكم في JavaScript كامل محدود كامل كامل
سرعة التنفيذ عالية متوسطة عالية عالية جدًا
دعم headless نعم نعم نعم نعم
توافق المتصفحات Chromium/Chrome فقط جميع المتصفحات Chromium/Chrome Chrome/Firefox/Safari
حجم المجتمع متوسط كبير كبير متنامي
نشاط التطوير متباطئ نشط نشط نشط جدًا

التثبيت وإعداد بيئة العمل

التثبيت الأساسي

pip install pyppeteer

التثبيت مع التبعيات الإضافية

pip install pyppeteer[dev]

تثبيت Chromium يدويًا

عند التشغيل الأول، يتم تنزيل Chromium تلقائيًا، ولكن يمكن تثبيته مسبقًا:

import pyppeteer
import asyncio

async def install_chromium():
    await pyppeteer.install()

asyncio.run(install_chromium())

تحديد مسار المتصفح

browser = await launch(
    executablePath='/path/to/chrome',
    headless=True
)

دليل استخدام شامل

التشغيل غير المتزامن وتكوين المتصفح

import asyncio
from pyppeteer import launch

async def main():
    # تشغيل بالإعدادات الأساسية
    browser = await launch(
        headless=True,
        args=[
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage',
            '--disable-gpu'
        ]
    )
    
    # إنشاء صفحة جديدة
    page = await                    

توصيات