كتابة سكربت لاستخراج البيانات من مواقع الويب باستخدام Beautiful Soup في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 10 سبتمبر 2024

محتوى المقال

كتابة سكربت لاستخراج البيانات من مواقع الويب باستخدام Beautiful Soup في Python

استخراج البيانات من مواقع الويب (Web Scraping) هو عملية جمع البيانات من صفحات الويب تلقائيًا. تُعد مكتبة Beautiful Soup في Python من الأدوات القوية والمستخدمة على نطاق واسع لتحليل محتوى HTML واستخراج المعلومات منه بسهولة. في هذا المقال، سنتعلم كيفية كتابة سكربت لاستخراج البيانات من مواقع الويب باستخدام Beautiful Soup.

ما هي مكتبة Beautiful Soup؟

Beautiful Soup هي مكتبة في Python تُستخدم لتحليل مستندات HTML و XML. تُساعد هذه المكتبة في تحويل المستندات إلى شجرة يمكن التنقل فيها بسهولة واستخراج البيانات المطلوبة منها. تُعد Beautiful Soup مثالية لاستخراج البيانات من صفحات الويب بطريقة سريعة ومرنة.

تثبيت المكتبات المطلوبة

للبدء في كتابة سكربت لاستخراج البيانات، سنحتاج إلى تثبيت مكتبتين أساسيتين: requests لجلب صفحات الويب وBeautiful Soup لتحليلها:

pip install requests
pip install beautifulsoup4

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

تحميل صفحة الويب

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

import requests
from bs4 import BeautifulSoup

# تحميل الصفحة
url = "https://example.com"
response = requests.get(url)

# عرض محتوى الصفحة (HTML)
print(response.text)

في هذا المثال، نقوم بتحميل محتوى الصفحة من موقع example.com باستخدام requests.get()، ثم نقوم بعرض محتوى الصفحة باستخدام response.text.

تحليل HTML باستخدام Beautiful Soup

بعد جلب الصفحة، نحتاج إلى تحليل محتوى HTML للعثور على البيانات المطلوبة. هنا يأتي دور Beautiful Soup:

# تحليل محتوى HTML باستخدام Beautiful Soup
soup = BeautifulSoup(response.text, 'html.parser')

# عرض تحليل الصفحة بشكل منظم
print(soup.prettify())

في هذا المثال، نقوم بتحليل محتوى HTML باستخدام BeautifulSoup وتحديد نوع التحليل على أنه 'html.parser'. ثم نعرض محتوى HTML بشكل منظم باستخدام prettify().

استخراج البيانات المطلوبة

بمجرد تحليل الصفحة، يمكنك استخدام Beautiful Soup لاستخراج المعلومات المطلوبة بناءً على العلامات والعناصر الموجودة في HTML. على سبيل المثال، دعنا نستخرج جميع الروابط من الصفحة:

# استخراج جميع الروابط من الصفحة
links = soup.find_all('a')

for link in links:
    print(link.get('href'))

في هذا المثال، نستخدم find_all('a') لاستخراج جميع العلامات التي تحتوي على الروابط. ثم نقوم بعرض الروابط باستخدام get('href').

استخراج النصوص من علامات محددة

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

# استخراج جميع عناوين المقالات
titles = soup.find_all('h2', class_='post-title')

for title in titles:
    print(title.get_text())

في هذا المثال، نستخدم find_all() لاستخراج جميع العناوين داخل العلامات h2 التي تحتوي على الصنف post-title. ثم نقوم بعرض النصوص باستخدام get_text().

استخدام CSS Selectors لاستخراج البيانات

يمكنك أيضًا استخدام CSS Selectors لاستخراج البيانات من صفحة HTML باستخدام select():

# استخراج العناوين باستخدام CSS Selectors
titles = soup.select("h2.post-title")

for title in titles:
    print(title.get_text())

في هذا المثال، نستخدم select() لاستخراج العناوين باستخدام CSS Selectors. يمكنك استخدام هذه الطريقة لتحديد عناصر معقدة في الصفحة بسهولة.

التعامل مع البيانات بعد استخراجها

بعد استخراج البيانات من الصفحة، يمكنك التعامل معها بالطريقة التي ترغب بها، سواء بحفظها في ملف، تحليلها، أو استخدامها في تطبيق آخر:

حفظ البيانات في ملف CSV

لنقم بحفظ البيانات المستخرجة (مثل الروابط) في ملف CSV:

import csv

# حفظ الروابط في ملف CSV
with open('links.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['Link'])
    for link in links:
        writer.writerow([link.get('href')])

في هذا المثال، نقوم بفتح ملف CSV باسم links.csv وحفظ جميع الروابط المستخرجة فيه.

التعامل مع الصفحات الديناميكية

في بعض الأحيان، قد تحتوي صفحات الويب على محتوى ديناميكي يتم تحميله بواسطة JavaScript. في مثل هذه الحالات، يمكن استخدام أدوات مثل Selenium أو Scrapy جنبًا إلى جنب مع Beautiful Soup للحصول على المحتوى المطلوب.

مقارنة Beautiful Soup مع مكتبات استخراج البيانات الأخرى

هناك العديد من المكتبات والأدوات المتاحة لاستخراج البيانات من الويب. إليك مقارنة بسيطة بين Beautiful Soup وبعض الأدوات الأخرى:

  • Beautiful Soup: مثالية لاستخراج البيانات من صفحات HTML ثابتة، سهلة الاستخدام وبديهية.
  • Scrapy: إطار عمل كامل لاستخراج البيانات يدعم التعامل مع الصفحات الديناميكية، مع قدرة على إدارة الطلبات بشكل متقدم.
  • Selenium: تُستخدم لاختبار واجهات المستخدم، ولكن يمكن استخدامها لاستخراج البيانات من صفحات ديناميكية تعتمد على JavaScript.

الخلاصة

تُعد مكتبة Beautiful Soup أداة قوية ومرنة لاستخراج البيانات من صفحات الويب في Python. سواء كنت تبحث عن استخراج الروابط، النصوص، أو أي بيانات أخرى من صفحة HTML، توفر لك Beautiful Soup الأدوات اللازمة لتحقيق ذلك بسهولة. بمجرد استخراج البيانات، يمكنك معالجتها وتحليلها بالطريقة التي تناسب احتياجاتك.

طور مهاراتك: مقالات يجب قراءتها في البرمجة