كيفية استخراج البيانات من المواقع الإلكترونية وإنشاء كيانات منظمة باستخدام Python

المقدمة

في هذا الدرس، سنتعرف على كيفية استخدام Python لاستخراج البيانات من مواقع الويب (Web Scraping) وتحويلها إلى بيانات منظمة يمكن استخدامها في التحليل أو تخزينها في قواعد البيانات. سنستخدم مكتبات Python الشائعة مثل requests لجلب المحتوى من صفحة الويب، و BeautifulSoup لتحليل محتوى HTML، و pandas لتنظيم البيانات في إطار بيانات (DataFrame).

المتطلبات

  • Python مثبت على جهازك. يمكنك تنزيله من الرابط هنا.
  • مكتبة requests: تستخدم لجلب محتويات صفحة الويب.
  • مكتبة BeautifulSoup: لتحليل صفحة الويب واستخراج البيانات المطلوبة.
  • مكتبة pandas: لتنظيم البيانات وتحويلها إلى صيغة قابلة للاستخدام (مثل CSV أو DataFrame).

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

قبل أن نبدأ بكتابة الكود، تأكد من تثبيت المكتبات المطلوبة باستخدام pip، وهو مدير الحزم الخاص بـ Python:

pip install requests
pip install beautifulsoup4
pip install pandas

2. جلب صفحة الويب باستخدام requests

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

على سبيل المثال، دعنا نحاول جلب محتوى الصفحة الرئيسية لموقع example.com:

import requests

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

# التحقق من نجاح الطلب
if response.status_code == 200:
    print("تم جلب الصفحة بنجاح")
else:
    print("حدث خطأ في جلب الصفحة")

في هذا المثال، استخدمنا method get() من مكتبة requests لجلب الصفحة. ثم نتحقق من رمز الحالة status_code للتأكد من أن العملية تمت بنجاح. إذا كان الرمز 200، فهذا يعني أن الطلب قد تم بنجاح.

3. تحليل المحتوى باستخدام BeautifulSoup

بعد جلب الصفحة بنجاح، نحتاج الآن إلى تحليل المحتوى باستخدام مكتبة BeautifulSoup. تقوم هذه المكتبة بتحويل المحتوى HTML إلى كائنات Python يمكن التعامل معها بسهولة، مثل البحث عن عناصر معينة (العناوين، الجداول، الفقرات، إلخ).

لنقم بتحليل الصفحة واستخراج العنوان الرئيسي كمثال:

from bs4 import BeautifulSoup

# تحليل الصفحة باستخدام BeautifulSoup
soup = BeautifulSoup(response.content, "html.parser")

# استخراج العنوان الرئيسي للصفحة
title = soup.find("title").get_text()
print("عنوان الصفحة:", title)

في هذا المثال، نستخدم BeautifulSoup لتحليل HTML وإيجاد عنصر title ثم استخراج النص الداخلي له باستخدام method get_text(). هذا مثال بسيط على كيفية الوصول إلى عناصر HTML.

4. استخراج البيانات المنظمة من الجداول

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

# العثور على الجدول في الصفحة
table = soup.find("table")

# استخراج جميع الصفوف من الجدول
rows = table.find_all("tr")

# استخراج البيانات من كل صف
data = []
for row in rows:
    cols = row.find_all("td")
    cols = [col.text.strip() for col in cols]  # تنظيف النص من الفراغات الزائدة
    data.append(cols)

# عرض البيانات المستخرجة
for row in data:
    print(row)

في هذا المثال، نستخدم BeautifulSoup للعثور على عنصر table في الصفحة، ثم نستخدم find_all("tr") لاستخراج جميع الصفوف (rows). لكل صف، نبحث عن جميع الخلايا td ثم نقوم باستخراج النص من كل خلية.

5. تنظيم البيانات باستخدام pandas

بعد استخراج البيانات من الجدول، يمكننا الآن استخدام مكتبة pandas لتنظيمها في إطار بيانات (DataFrame). DataFrame يسهل علينا تحليل البيانات أو تصديرها إلى ملفات CSV:

import pandas as pd

# تحويل البيانات إلى DataFrame
df = pd.DataFrame(data, columns=["اسم العمود 1", "اسم العمود 2", "اسم العمود 3"])

# عرض البيانات كجدول
print(df)

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

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

الخطوة الأخيرة هي حفظ البيانات في ملف CSV حتى نتمكن من استخدامها لاحقًا. pandas يوفر لنا طريقة سهلة للقيام بذلك:

# حفظ البيانات في ملف CSV
df.to_csv("extracted_data.csv", index=False)

print("تم حفظ البيانات في ملف extracted_data.csv")

باستخدام method to_csv()، قمنا بحفظ البيانات في ملف CSV. يمكنك الآن استخدام هذا الملف في تحليلاتك أو استيراده إلى أي برنامج آخر.

الخاتمة

في هذا الدرس، تعلمنا كيفية جلب البيانات من صفحات الويب باستخدام requests وBeautifulSoup، وكيفية تحليلها واستخراج البيانات منها. بعد ذلك، قمنا باستخدام pandas لتنظيم البيانات وحفظها في ملف CSV. يمكن تطبيق هذه المهارات في العديد من المشاريع مثل تحليل البيانات، تتبع الأسعار من مواقع التسوق، أو حتى بناء قواعد بيانات من مواقع الأخبار.

تذكر دائمًا أن بعض المواقع قد تمنع استخدام Scraping أو تتطلب أذونات معينة. تأكد من مراجعة شروط الاستخدام الخاصة بالموقع قبل البدء في استخراج البيانات منه.

التعليقات

اترك تعليقاً