في عالم أصبح أكثر اعتمادًا على البيانات من أي وقت مضى، فإن القدرة على جمع وتحليل كميات هائلة من المعلومات يمكن أن تمنح الشركات والمهنيين ميزة تنافسية كبيرة. تُعد عملية كشط الويب، وهي عملية استخراج البيانات من مواقع الويب، أداة قوية في ترسانة محللي البيانات ومطوري الويب والمسوقين الرقميين ومبرمجي بايثون. يأخذك هذا الدليل عبر تقنيات كشط الويب الأساسية والمتقدمة، ويسلط الضوء على أفضل الممارسات، ويقدم واجهة برمجة تطبيقات كشط الويب ProxyScrape كحل مرن لكل من المواقع الإلكترونية الثابتة والديناميكية.
لتحديد ما إذا كان الموقع الإلكتروني ثابتاً أم ديناميكياً:
تمثل هذه الطرق مجرد طرق قليلة لتحديد ما إذا كان موقع الويب ثابتًا أو ديناميكيًا. على الرغم من وجود استراتيجيات إضافية، إلا أننا قمنا بتحليل وتحديد هذه الأساليب التي نعتقد أنها مستخدمة وفعالة على نطاق واسع.
لكشط المحتوى الثابت، تقدم Python مكتبات قوية مثل "طلبات" لإجراء طلبات HTTP و "BeautifulSoup" لتحليل مستندات HTML و XML. إليك مثال بسيط:
استيراد الطلبات
من bs4 bs4 استيراد الحساء الجميل
الاستجابة = الطلبات.get('http://example.com')
الحساء = الحساء الجميل(response.text, 'html.parser')
# استخرج البيانات المطلوبة
البيانات = soup.find_all('p')
هذه الطريقة مثالية لأولئك الذين بدأوا للتو رحلة كشط الويب. وهي فعالة للمواقع الإلكترونية ذات المحتوى الثابت، وتتطلب الحد الأدنى من الإعداد.
تمثل مواقع الويب الديناميكية تحديًا مختلفًا. تقوم هذه المواقع بتحميل محتواها بشكل غير متزامن باستخدام JavaScript، مما يعني أن كشط HTML المباشر لن يعمل لأن البيانات غير موجودة في التحميل الأولي للصفحة.
هناك طريقتان للتعامل مع تجريف المواقع الديناميكية:
لكشط المحتوى الديناميكي، تحاكي أدوات مثل Playwright تفاعل المستخدم الحقيقي مع المتصفح، مما يسمح لك بكشط البيانات التي يتم تحميلها ديناميكيًا. إليك لمحة موجزة عن استخدام Playwright مع Python:
من 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')
طباعة(المحتوى)
إغلاق المتصفح()
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 تقدم واجهة برمجة تطبيقات كشط الويب التي تبسّط استخراج البيانات من مواقع الويب الثابتة والديناميكية.
تتضمن ميزات API ما يلي:
هذا توضيح لكيفية دمج واجهة برمجة تطبيقات كشط الويب الخاصة بنا في نصوص 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)
إليك مثال ننتظر فيه بدء تحميل الرمز المفضل. عادةً ما يكون هذا هو آخر طلب لبدء التحميل على موقع الاختبار الذي نستخدمه.
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 لا يقتصر الأمر على توفير وكلاء متميزين وسكنيين ومتنقلين ومخصصين لمثل هذه الاحتياجات فحسب، بل يشجع على تجريف الويب الأخلاقي.
هل أنت مستعد لبدء مغامرة كشط الويب؟ اشترك في ProxyScrape اليوم واستكشف الإمكانيات اللانهائية للويب من خلال وكلائنا المخصصين والوكلاء المقيمين وواجهة برمجة تطبيقات تجريف الويب الشاملة.