برنامه نویسی

خراش وب با نمایشنامه نویس و پایتون: راهنمای توسعه دهنده

مقدمه

در دنیای خراش وب ، وب سایت های پویا که با JavaScript بارگذاری شده اند ، همیشه یک چالش را ایجاد کرده اند. وارد کردن نمایشنامه نویس– یک کتابخانه اتوماسیون مرورگر قدرتمند توسط مایکروسافت که باعث می شود وب سایت های مدرن و تعاملی را ساده کند. همراه با پایتون ، نمایشنامه نویس یک روش یکپارچه برای انجام حتی پیچیده ترین کارهای خراش دهنده ارائه می دهد. در این راهنما ، شما یاد می گیرید که چگونه از نمایشنامه نویس برای خراش وب کارآمد و قابل اعتماد استفاده کنید.


چرا نمایشنامه نویس؟

نمایشنامه نویس از توانایی خود در خودکارسازی مرورگرهای کروم ، فایرفاکس و WebKit با یک API واحد استفاده می کند. بر خلاف ابزارهای سنتی مانند سلنیوم ، نمایشنامه نویس:

  • دسته محتوای پویا بی دردسر (اسپا ، صفحات تنبل).
  • پیشنهاد در انتظار برای آماده شدن عناصر.
  • حمایت حالت های بدون سر و سربشر
  • تصویب کردن رهبری شبکه وت چند تبی مرور

برای توسعه دهندگان ، این یک تغییر دهنده بازی برای جابجایی سایت های سنگین جاوا اسکریپت مانند React یا برنامه های زاویه ای است.


شروع

1. نمایشنامه نویس را نصب کنید

ابتدا ، بسته بندی Python Playwright و باینری های مرورگر را نصب کنید:

pip install playwright
playwright install
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. یک مرورگر راه اندازی کنید

با شروع یک نمونه مرورگر شروع کنید:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)  # Set headless=True for background
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.title())
    browser.close()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


گردش کار اصلی خراش وب

بیایید داده های محصول را از یک سایت تجارت الکترونیکی نمایشی جدا کنیم.

مرحله 1: هدایت و استخراج داده ها

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://webscraper.io/test-sites/e-commerce/allinone")

    # Extract product titles and prices
    products = page.query_selector_all(".thumbnail")
    for product in products:
        title = product.query_selector(".title").text_content()
        price = product.query_selector(".price").text_content()
        print(f"{title}: {price}")

    browser.close()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: محتوای پویا را کنترل کنید

برای اطمینان از بار عناصر از WAITOOING PLOYWRIGHT استفاده کنید:

# Wait for a selector to appear
page.wait_for_selector(".product", state="visible")

# Click a "Load More" button (if present)
page.click("button:has-text('Load More')")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


تکنیک های پیشرفته

1. فرم های ورود به سیستم را انجام دهید

جلسات تأیید شده خودکار:

page.goto("https://example.com/login")
page.fill("#username", "your_username")
page.fill("#password", "your_password")
page.click("#submit-button")

# Verify login success
page.wait_for_selector(".dashboard")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. درخواست های شبکه را رهگیری کنید

پاسخ های API را ضبط کنید (به عنوان مثال ، درخواست های XHR/FETCH):

def handle_response(response):
    if "/api/products" in response.url:
        print(response.json())

page.on("response", handle_response)
page.goto("https://example.com/products")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. فایلها را بارگیری کنید

بارگیری فایل های خودکار:

with page.expect_download() as download_info:
    page.click("a.download-csv")
download = download_info.value
download.save_as("data.csv")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

4. Iframes را کنترل کنید

دسترسی به عناصر داخل iframes:

iframe = page.frame_locator("iframe#content")
text = iframe.locator(".text").text_content()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


بهترین روشها

  1. برای سرعت از حالت بی سر استفاده کنید:
   browser = p.chromium.launch(headless=True)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. از تشخیص خودداری کنید:

     page.set_extra_http_headers({"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"})
    
  1. محدود کردن نرخ: تاخیر را برای تقلید از رفتار انسان اضافه کنید:
   page.wait_for_timeout(2000)  # 2-second delay
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. رسیدگی به خطا:
   try:
       page.goto("https://unstable-site.com")
   except playwright._impl._api_types.Error as e:
       print(f"Navigation failed: {e}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


موارد استفاده در دنیای واقعی

  1. نظارت: سایت های تجارت الکترونیکی را برای تغییرات قیمت پیگیری کنید.
  2. ضایعات رسانه های اجتماعی: پست های عمومی را از سیستم عامل هایی مانند Twitter/X (بدون نقض TOS) استخراج کنید.
  3. تست خودکار: عناصر UI را در طول توسعه تأیید کنید.
  4. تجمع خبری: مقالات زمان واقعی را از پورتال های خبری خراش دهید.

پایان

نمایشنامه نویس با پایتون ترکیبی قوی برای خراش دادن وب سایت های مدرن است. توانایی آن در رسیدگی به محتوای پویا ، اتوماسیون تعامل و جلوگیری از تشخیص ، آن را برای توسعه دهندگان مقابله با پروژه های پیچیده خراش ایده آل می کند.

مراحل بعدی:


برای نوک: همیشه احترام بگذارید robots.txt و شرایط خدمات یک وب سایت. وقتی شک دارید ، به مجوز دسترسی پیدا کنید!

خراش مبارک! 🚀

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا