كتابة سكربت لاستخراج البيانات من مواقع الويب باستخدام Beautiful Soup في Python
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 10 سبتمبر 2024محتوى المقال
- ما هي مكتبة Beautiful Soup؟
- تثبيت المكتبات المطلوبة
- تحميل صفحة الويب
- تحليل HTML باستخدام Beautiful Soup
- استخراج البيانات المطلوبة
- التعامل مع البيانات بعد استخراجها
- التعامل مع الصفحات الديناميكية
- مقارنة Beautiful Soup مع مكتبات استخراج البيانات الأخرى
- الخلاصة
استخراج البيانات من مواقع الويب (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 الأدوات اللازمة لتحقيق ذلك بسهولة. بمجرد استخراج البيانات، يمكنك معالجتها وتحليلها بالطريقة التي تناسب احتياجاتك.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- إنشاء واجهات رسومية باستخدام مكتبة PyQt في Python
- كيفية التعامل مع ملفات JSON في Python
- كيفية استخدام مكتبة Matplotlib لإنشاء الرسوم البيانية في Python
- بناء واجهة برمجة تطبيقات (API) باستخدام Flask في Python
- كيفية استخدام مكتبة NumPy لإجراء العمليات الحسابية في Python
- كيفية تشغيل واستعمال بيئات العمل الافتراضية في Python
- كيفية إنشاء بوت تلقائي لمواقع التواصل الاجتماعي باستخدام Python
- كيفية التعامل مع تواريخ وأوقات باستخدام مكتبة datetime في Python
- استخدام مكتبة PyTorch لتعلم الآلة في Python
- كيفية قراءة ومعالجة الصور باستخدام مكتبة OpenCV في Python