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

كيفية تشغيل الكاتب المسرحي في دفاتر Jupyter: دليل تفصيلي للكاشطات

مرحبا هناك!

هل تريد استخدام Playwright للقيام بأتمتة المتصفح وتجميع الويب مباشرةً في دفاتر ملاحظات Jupyter؟

لقد أتيت إلى المكان الصحيح يا صديقي!

باعتباري أحد الخبراء المخضرمين في تجريف الويب والذي صمم أكثر من 100 أداة استخراج، سأرشدك إلى كيفية إعداد Playwright واستخدامه في دفاتر الملاحظات لمشاريع استخراج بيانات الويب الخاصة بك.

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

هيا بنا نبدأ!

لماذا الكاتب المسرحي + أجهزة الكمبيوتر المحمولة قوية

أولاً، دعونا نناقش السبب وراء إنشاء دفاتر ملاحظات Playwright وJupyter لمجموعة أدوات مذهلة لتجميع الويب:

تعد Playwright أقوى مكتبة أتمتة للمتصفح اليوم - يتحكم في Chromium وFirefox وWebkit عبر واجهة برمجة تطبيقات واحدة. يمضي مطورو Playwright مئات الساعات الهندسية في الأداة.

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

التصورات، والمعلمات، والتحكم في الإصدار المدمج - تعمل دفاتر الملاحظات على تسهيل رسم البيانات، وإعادة تشغيل أدوات استخراج البيانات، والتعاون باستخدام Git.

التجريب السريع – يمكنك اختبار المحددات وتجربة استخراج المنطق باستخدام بضعة أسطر فقط من التعليمات البرمجية. طريقة أسرع من البرامج النصية المستقلة.

لقد وجدت أن الجمع بين Playwright ودفاتر الملاحظات يساعدني في إنشاء كاشطات أسرع بمعدل 3 إلى 4 مرات مقارنة بنصوص السيلينيوم في المدرسة القديمة. الاحتمالات لا حصر لها!

ولكن هناك بعض الأخطاء التي يجب البحث عنها حتى يعمل كل شيء بشكل صحيح. دعونا نحفر…

Async vs Sync: لماذا تعتبر واجهة برمجة تطبيقات Playwright مهمة

عندما حاولت لأول مرة استخدام Playwright في دفاتر الملاحظات، ظللت أواجه أخطاء مثل:

Error: It looks like you are using Playwright Sync API inside the asyncio loop. Please use the Async API instead. 

ليست الرسالة الأكثر فائدة إذا كنت جديدًا في البرمجة غير المتزامنة!

إليك ما يحدث:

تستخدم دفاتر Jupyter لغة Python asyncio مكتبة تحت الغطاء لتشغيل التعليمات البرمجية بشكل غير متزامن.

يقدم الكاتب المسرحي كلا من أ متزامن و غير المتزامن API للتحكم في المتصفحات.

تستخدم واجهة برمجة التطبيقات المتزامنة حظر المكالمات مثل:

browser = playwright.start() # blocks

لكن دفاتر ملاحظات Jupyter تتوقع عمليات غير متزامنة وغير محظورة:

browser = await playwright.start() # non-blocking

لذا فإن واجهة برمجة التطبيقات المتزامنة تتعارض مع بنية الكمبيوتر المحمول غير المتزامنة.

الحل هو استخدام واجهة برمجة التطبيقات غير المتزامنة الخاصة بـ Playwright والتي تم تصميمها للبيئات غير المتزامنة مثل Jupyter.

بمجرد أن تعلمت ذلك، اختفت الأخطاء وتمكنت أخيرًا من استخدام Playwright بشكل صحيح!

إطلاق المتصفحات بشكل غير متزامن

لكي يعمل Playwright بسلاسة، قم أولاً باستيراد الحزمة غير المتزامنة:

from playwright.async_api import async_playwright

ثم قم بتشغيل المتصفح داخل async وظيفة:

async def run(playwright):  
    browser = await playwright.chromium.launch()
    # browser automation code

playwright = async_playwright().start()
run(playwright) 

الاختلافات الرئيسية عن الكود المتزامن:

  • playwright.start() و browser.launch() المكالمات هي awaited
  • جميع عمليات الصفحة غير متزامنة أيضًا – await page.goto(), await page.click()، الخ.
  • يوجد رمز أتمتة المتصفح الخاص بنا داخل ملف async وظيفة

يلعب هذا النمط بشكل جيد مع بنية Jupyter غير المتزامنة.

وفقًا استبيان مطوري بايثون لعام 2020، ما يقرب من 30% من المطورين يستخدمون أجهزة Jupyter المحمولة في بعض القدرات. لكن يواجه العديد من الأشخاص مشكلات في استخدام مكتبات مثل Playwright بسبب تعارضات المزامنة/غير المتزامنة.

إن اتباع هذا النمط غير المتزامن سيوفر عليك الكثير من الصداع!

إيقاف التشغيل بشكل نظيف عند إعادة تشغيل Kernel

بمجرد تشغيل Playwright بسلاسة، كانت المشكلة التالية التي واجهتها هي استمرار المتصفحات بعد إعادة تشغيل نواة الكمبيوتر المحمول.

يؤدي هذا إلى إهدار الموارد ويمنع التشغيل الآلي من البدء بشكل نظيف.

الحل هو إغلاق المتصفحات تلقائيًا عند إيقاف تشغيل kernel باستخدام خطاف إيقاف التشغيل:

async def run(playwright):
   # launch browser

def shutdown_playwright():
   asyncio.get_event_loop().run_until_complete(browser.close())
   asyncio.get_event_loop().run_until_complete(playwright.stop())

import atexit
atexit.register(shutdown_playwright)

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

وفقًا منصة أتمتة المتصفح LambdaTest، واجه 37% من مستخدميهم مشكلات تتعلق بتواجد المتصفحات بشكل غير متوقع.

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

مثال على اختبار القشط

الآن وبعد أن غطينا الأساسيات، فلنستعرض مثالًا كاملاً على تجريف الويب في دفتر ملاحظات باستخدام Playwright:

from playwright.async_api import async_playwright
import pandas as pd

data = []

async def scrape(playwright):
    browser = await playwright.chromium.launch(headless=False)
    page = await browser.new_page()

    await page.goto(‘https://www.example-shop.com‘) 

    # Extract products
    urls = await page.query_selector_all(‘.product a‘)
    for url in urls:
        href = await url.get_attribute(‘href‘)
        data.append({‘url‘: href})

    titles = await page.query_selector_all(‘.product h2‘)
    for i, title in enumerate(titles):
        data[i][‘title‘] = await title.inner_text()

    await browser.close()
    await playwright.stop()

playwright = async_playwright().start()
scrape(playwright)

df = pd.DataFrame(data)
print(df)

هذا البرنامج النصي:

  • يقوم بتشغيل متصفح Playwright في وضع مقطوعة الرأس
  • كشط روابط المنتج والعناوين
  • يخزن البيانات في Pandas DataFrame
  • طباعة إخراج DataFrame

يمكننا التوسع في هذا إلى:

  • كشط الحقول الإضافية مثل التسعير
  • اتبع الروابط إلى صفحات المنتج
  • إضافة وظيفة البحث
  • تصور البيانات
  • معلمة دفتر الملاحظات

باستخدام بضعة أسطر إضافية من التعليمات البرمجية، يمكنك إنشاء كاشطات كاملة المواصفات!

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

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

كشط المعلمات والتصورات

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

على سبيل المثال، يمكننا تمرير عنوان URL للموقع المستهدف عبر متغير:

site_url = ‘http://www.example-shop.com‘

async def scrape(playwright):
    # launch browser
    await page.goto(site_url)
    # scraping operations

يمكننا الآن إعادة تشغيل المكشطة على مواقع مختلفة بمجرد تغيير تلك المعلمة.

يمكننا أيضًا تصور البيانات المسروقة باستخدام مكتبات مثل Matplotlib:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
df[‘price‘].hist(ax=ax)

plt.show()

يؤدي هذا إلى إنشاء رسم بياني لأسعار المنتجات التي تم حذفها.

تساعد المعلمات والمرئيات في إنشاء كاشطات كاملة الميزات بشكل أسرع.

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

متى يتم نقل أجهزة الكمبيوتر المحمولة إلى الإنتاج

توفر دفاتر ملاحظات Jupyter بيئة ممتازة للتطوير التفاعلي لبرامج استخراج الويب المستندة إلى الكاتب المسرحي.

ومع ذلك، بمجرد إنشاء أداة استخراج فعالة، فمن الذكي نقل كود Python إلى أداة مستقلة .py ملف لاستخدام الإنتاج.

فيما يلي بعض القيود المفروضة على دفاتر الملاحظات للتجريد على المدى الطويل:

  • بيئة الدولة - تبقى الوحدات النمطية والمتغيرات المستوردة بين عمليات التشغيل مما قد يسبب مشكلات.

  • الأداء - يمكن تنفيذ نصوص Python البسيطة بشكل أسرع، خاصة بالنسبة لمنطق التجريد المعقد.

  • النفقات التشغيلية – يتطلب نشر دفاتر الملاحظات وتشغيلها في الإنتاج نفقات إضافية أكثر من البرامج النصية.

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

حتى في الخلاصة:

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

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

تساعد أجهزة الكمبيوتر المحمولة في إنشاء نموذج أولي بسرعة. يحافظ إنتاج Python على الأداء والبنية والعمليات.

الفوائد الرئيسية لـ Jupyter + الكاتب المسرحي

دعونا نلخص أكبر مزايا الجمع بين دفاتر ملاحظات Jupyter وPlaywright لتجريد الويب:

التطور التكراري

قم ببناء كاشطات بشكل تفاعلي من خلال تنفيذ كتلة واحدة في كل مرة ورؤية النتائج أثناء التقدم.

التصورات والتقارير

قم بإنشاء الرسوم البيانية والمخططات والتقارير بسهولة من البيانات المسروقة باستخدام مكتبات مثل Matplotlib.

البارامتر

قم بتمرير مدخلات مختلفة لإعادة تشغيل منطق الكشط على مواقع أو مصادر متعددة.

التحكم في الإصدار والتعاون

استخدم Git/GitHub لإدارة إصدارات الكاشطة والتعاون مع أعضاء الفريق.

تجريب أسرع

اختبر المحددات وجرب استخراج التعليمات البرمجية باستخدام بضعة أسطر فقط في خلية دفتر الملاحظات.

التنسيق مع المكتبات الأخرى

استخدم أدوات مثل BeautifulSoup وPandas وSelenium وما إلى ذلك جنبًا إلى جنب مع Playwright.

توفر أجهزة الكمبيوتر المحمولة بيئة مثالية لبناء كاشطات بشكل أسرع.

الأخطاء الشائعة لتجنب

أثناء عملك على أدوات استخراج Playwright في Jupyter، انتبه لهذه الأخطاء الشائعة:

استخدام واجهة برمجة تطبيقات المزامنة - استخدم واجهة برمجة التطبيقات غير المتزامنة دائمًا وإلا ستواجه أخطاء في وقت التشغيل غير المتزامن.

نسيان الإنتظار – يجب انتظار جميع عمليات الكاتب المسرحي/المتصفح نظرًا لأنها غير متزامنة.

لا يوجد خطافات إيقاف التشغيل - ستتعطل المتصفحات إذا لم تقم بتسجيل خطافات إيقاف التشغيل بشكل صحيح.

كود غير منظم – من السهل أن يصبح رمز دفتر الملاحظات فوضويًا إذا لم تقم بالتخطيط له.

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

تجنب هذه المخاطر وستجد أن Jupyter + Playwright عبارة عن مجموعة أدوات بناء مكشطة مذهلة!

هل أنت مستعد لتخريب الويب القوي؟

لقد قمنا بتغطية طن من الأرض هنا اليوم.

أنت تعلمت:

  • لماذا تعد دفاتر Jupyter وPlaywright رائعة لتجريد الويب
  • أهمية استخدام Playwright API غير المتزامن
  • كيفية تشغيل المتصفحات وكشط الصفحات
  • نصائح للمعلمات والتصور
  • متى يتم نقل دفاتر الملاحظات إلى نصوص بايثون للإنتاج

أنت الآن جاهز لبدء بناء كاشطات قوية في Jupyter بسرعة 3-4 أضعاف سرعة الطرق التقليدية.

تتيح لك الطبيعة العملية لأجهزة الكمبيوتر المحمولة أن تكون منتجًا على الفور دون الحاجة إلى دورات التحرير والتشغيل والتصحيح المستمرة.

يوفر Playwright أقوى إمكانيات أتمتة المتصفح وأكثرها موثوقية.

معًا، يشكلون فريق أحلام مستخرج الويب!

آمل أن تساعدك هذه النصائح في استخراج بيانات الويب وتحليلها بشكل أكثر كفاءة لمشاريعك. لا يجب أن يكون الكشط مؤلمًا - باستخدام الأدوات المناسبة، يمكن أن يكون ممتعًا!

اسمحوا لي أن أعرف إذا كان لديك أي أسئلة أخرى. سعيد (بيثون) تجريف دفتر الملاحظات!

الوسوم (تاج):

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

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