شعار proxyscrape داكن

كشط المواقع الثابتة والديناميكية باستخدام Python و ProxyScrape API

أدلة إرشادية, بايثون, الاختلافات, May-02-20245 دقائق للقراءة

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

تحديد ما إذا كان الموقع الإلكتروني ثابتًا أم ديناميكيًا

لتحديد ما إذا كان الموقع الإلكتروني ثابتاً أم ديناميكياً:

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

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

كشط مواقع الويب الثابتة باستخدام الطلبات و BeautifulSoup

لكشط المحتوى الثابت، تقدم Python مكتبات قوية مثل "طلبات" لإجراء طلبات HTTP و "BeautifulSoup" لتحليل مستندات HTML و XML. إليك مثال بسيط:

  • تقديم طلب: استخدم 'الطلبات' لاسترداد محتوى HTML للصفحة.
  • التحليل باستخدام BeautifulSoup: بمجرد حصولك على محتوى الصفحة، يمكن لـ 'BeautifulSoup' تحليل واستخراج معلومات محددة.
استيراد الطلبات
من bs4 bs4 استيراد الحساء الجميل

الاستجابة = الطلبات.get('http://example.com')

الحساء = الحساء الجميل(response.text, 'html.parser')

# استخرج البيانات المطلوبة
البيانات = soup.find_all('p')

هذه الطريقة مثالية لأولئك الذين بدأوا للتو رحلة كشط الويب. وهي فعالة للمواقع الإلكترونية ذات المحتوى الثابت، وتتطلب الحد الأدنى من الإعداد.

كشط المواقع الديناميكية

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

هناك طريقتان للتعامل مع تجريف المواقع الديناميكية:

  • الطريقة الأولى هي استخدام مكتبة أتمتة المتصفح مثل Playwright/Selenium للحصول على المحتوى ثم تحليلها باستخدام Beautifulsoup.
  • الطريقة الثانية تشبه لعب دور المحقق مع علامة تبويب الشبكة لتحديد نقطة النهاية التي يستخدمها الموقع الإلكتروني لجلب بياناته. بعد ذلك، ما عليك سوى استخدام وحدة "الطلب" في Python لجلب تلك البيانات بنفسك.

تصفح المواقع الإلكترونية الديناميكية باستخدام Playwright

لكشط المحتوى الديناميكي، تحاكي أدوات مثل Playwright تفاعل المستخدم الحقيقي مع المتصفح، مما يسمح لك بكشط البيانات التي يتم تحميلها ديناميكيًا. إليك لمحة موجزة عن استخدام Playwright مع Python:

  • تثبيت Playwright: قم بتثبيت حزمة Playwright وأداة سطر الأوامر.
    - "pip install playwright"
    - "playwright install"
  • استخدام Playwright لمحاكاة التفاعلات: اكتب برنامج نصي يتنقل في الموقع الإلكتروني ويتفاعل معه حسب الضرورة لتشغيل تحميل المحتوى الديناميكي
من playwright.sync_api استيراد sync_playwright


إذا __name__ = = '__main____':

   مع sync_playwright() باسم p:

       المتصفح = p.chromium.launch(headless=صحيح)

      الصفحة = المتصفح.new_page()

      الصفحة.goto('https://www.scrapethissite.com/pages/ajax-javascript/')

      # محاكاة التفاعلات هنا

      page.click('//*[@id="2014"]')

      # استخرج المحتوى الديناميكي

       المحتوى = page.inner_text('//*[@id="oscars"]/div/div/div[5]/div/table')

      طباعة(المحتوى)

       إغلاق المتصفح()

تحليل لوحة الشبكة للحصول على نقاط نهاية API:

  • افتح أدوات المطور
    أ. افتح موقع الويب الذي تهتم به في متصفحك.
    ب. انقر بزر الماوس الأيمن في أي مكان على الصفحة، وحدد فحص أو اضغط على Ctrl+Shift+I (Cmd+Option+I على نظام Mac) لفتح أدوات المطورين.
  • افحص علامة تبويب الشبكة
    أ. انقر على علامة تبويب الشبكة في أدوات المطور. علامة التبويب هذه هي المكان الذي سترى فيه كل طلب شبكة يقوم به الموقع الإلكتروني.
    ب. قم بتحديث الصفحة لبدء التقاط حركة المرور من البداية.
  • تصفية طلبات أجاكس وتحديدها
    أ. يمكنك تصفية الطلبات حسب أنواع الطلبات مثل XHR (XMLHttpRequest)، والتي تُستخدم عادةً لطلبات AJAX.
    ب. تفاعل مع الصفحة - مثل النقر على الأزرار أو ملء النماذج أو التمرير - لتحفيز التحميل الديناميكي للمحتوى.
    ج. راقب طلبات الشبكة التي تظهر عند تنفيذ هذه الإجراءات. ابحث عن الطلبات التي تجلب البيانات التي تهتم بها.
  • تحليل الطلب
    أ. انقر على طلب في علامة تبويب الشبكة الذي يبدو أنه يسترجع البيانات التي تحتاجها.
    ب. تحقق من قسم الرؤوس لمعرفة طريقة الطلب (GET، POST، إلخ)، وعنوان URL، والعناوين الأخرى.
  • قم بتكرار الطلب باستخدام Python
    a. استخدم المعلومات من علامة التبويب الرؤوس لتكرار الطلب باستخدام مكتبة طلبات بايثون. إليك مثال أساسي لكيفية القيام بذلك:
import requests

# URL from the AJAX request
url = 'https://example.com/api/data'

# Any headers you observed that are necessary, like user-agent, authorization tokens, etc.
headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36,gzip(gfe)',
    'Authorization': 'Bearer token_if_needed'
}

# If it's a POST request, you might also need to send data
data = {
    'example_key': 'example_value'
}

# Replace 'get' with 'post' if the request type is POST
response = requests.get(url, headers=headers, data=data if 'post' in locals() else None)

# To view the response
print(response.json()) 

استخدام واجهة برمجة تطبيقات كشط الويب لكلا السيناريوهين

في حين أن إتقان الطلبات ومكتبة Playwright أو أي مكتبة عميل Http أخرى يمكن أن يكون مجزياً، إلا أنها تتطلب وقتاً وجهداً للتعامل معها بشكل صحيح. هناك طريقة بديلة تتمثل في الاستفادة من واجهة برمجة تطبيقات كشط الويب التي تلخص تعقيد مهام الكشط. فهي لا تتعامل مع إرسال طلبات HTTP نيابةً عنك فحسب، بل توفر أيضًا المساعدة في تقنيات مكافحة الحظر لمنع حظر بعض المواقع الإلكترونية.

تقديم واجهة برمجة تطبيقات استكشاف الويب ProxyScrape

ProxyScrape تقدم واجهة برمجة تطبيقات كشط الويب التي تبسّط استخراج البيانات من مواقع الويب الثابتة والديناميكية.

تتضمن ميزات API ما يلي:

  • سهولة التكامل مع المواقع الديناميكية والثابتة.
  • دعم شامل لأنواع مختلفة من أنشطة كشط الويب.
  • مجموعة واسعة من عناوين IP
  • يقدم ما يصل إلى 100,000 طلب مجاني، مما يتيح للمستخدمين استكشاف الإمكانات الكاملة لواجهة برمجة التطبيقات (API) وتحقيقها دون استثمار فوري.
  • تقنية متطورة لمكافحة الحظر، مصممة خصيصاً للمواقع الإلكترونية المعروفة بصعوبات الكشط.
  • تمكّن الإجراءات من التحكم الدقيق في توقيت تلقي مخرجات الموقع الإلكتروني. ويتضمن ذلك انتظار طلب عنوان URL معين، وتوقع ظهور عنصر ما على الموقع، وأنشطة ما بعد التمرير، وغير ذلك. استخدام

ProxyScrape واجهة برمجة تطبيقات كشط الويب مع موقع إلكتروني ثابت:

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

import requests
import base64
import json

data = {
    "url": "https://books.toscrape.com/",
    "httpResponseBody": True
}

headers = {
    'Content-Type': 'application/json',
    'X-Api-Key': 'YOUR_API_KEY'
}

response = requests.post('https://api.proxyscrape.com/v3/accounts/freebies/scraperapi/request', headers=headers, json=data)

if response.status_code == 200:
    json_response = response.json()
    if 'browserHtml' in json_response['data']:
        print(json_response['data']['browserHtml'])
    else:
        print(base64.b64decode(json_response['data']['httpResponseBody']).decode())
else:
    print("Error:", response.status_code)

ProxyScrape واجهة برمجة تطبيقات كشط الويب مع موقع ويب ديناميكي:

إليك مثال ننتظر فيه بدء تحميل الرمز المفضل. عادةً ما يكون هذا هو آخر طلب لبدء التحميل على موقع الاختبار الذي نستخدمه.

import requests
import json

url = 'https://api.proxyscrape.com/v3/accounts/freebies/scraperapi/request'

headers = {
    'Content-Type': 'application/json',
    'X-Api-Key': '<your api key>'  # Make sure to replace <your api key> with your actual API key
}

payload = {
    "url": "https://books.toscrape.com/",
    "browserHtml": True,
    "actions": [
        {
            "action": "waitForRequest",
            "urlPattern": "https://books.toscrape.com/static/oscar/favicon.ico",
            "urlMatchingOptions": "exact"
        }
    ]
}

response = requests.post(url, headers=headers, json=payload)

# Print the response from the server
print(response.text)  # Prints the response body as text

أفضل الممارسات في كشط الويب

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

الخاتمة

  • سواء كنت تختار كشط الويب كهواية أو تدمجه في مجموعة أدواتك الاحترافية، فإن فهم التمييز بين المواقع الثابتة والديناميكية ومعرفة كيفية كشط كليهما بشكل فعال أمر ضروري. من خلال الجمع بين مكتبات Python مثل Requests و Playwright/Selenium مع Beautifulsoup، فأنت مجهز للتعامل مع تحديات كشط الويب الخاصة بك.
  • إذا كان يتم اكتشاف البرامج النصية الخاصة بك لكشط الويب على أنها روبوتات وبالتالي يتم حظرها، أو إذا كنت ترغب في تحسين وتبسيط عملية إرسال الطلبات، ففكر في استكشاف واجهة برمجة تطبيقات كشط الويب الخاصة بنا. فهي مصممة لإدارة هذه المشكلات بكفاءة نيابةً عنك.
  • تذكّر أن مستقبل كشط الويب مشرق، ومن خلال الالتزام بأفضل الممارسات والاستفادة من الأدوات المتطورة، يمكنك فتح عالم من البيانات التي تنتظر من يكتشفها.

هل أنت مستعد لبدء مغامرة كشط الويب؟ اشترك في ProxyScrape اليوم واستكشف الإمكانيات اللانهائية للويب من خلال وكلائنا المخصصين والوكلاء المقيمين وواجهة برمجة تطبيقات تجريف الويب الشاملة.