شعار proxyscrape داكن

كيفية كشط الجداول من مواقع الويب - برنامج تعليمي من بايثون

كيفية القيام بذلك, بايثون, كشط, ديسمبر-13-20245 دقائق للقراءة

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

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

المتطلبات الأساسية

قبل أن ننتقل إلى التفاصيل التقنية، إليك ما ستحتاج إليه للمتابعة:

  • تأكد من تثبيت Python على نظامك. يمكنك تنزيل أحدث إصدار من هنا.
  • المكتبات المطلوبة:
    • طلبات-لجلبمحتوى HTML من مواقع الويب. إنها حزمة شائعة لإرسال طلبات HTTP في Python.
    • حساء جميل -مكتبة قوية لتحليل مستندات HTML و XML. سنستخدمها لاستخراج عناصر محددة من صفحة الويب الخاصة بنا.
    • بانداس-مكتبةالانتقال لمعالجة البيانات وتحليلها في Python. ستكون هذه وجهتنا النهائية حيث نقوم بتخزين بيانات الجدول المستخرجة.

سنستخدم الأمر pip لتثبيت المكتبات المطلوبة. ما عليك سوى تشغيل الأمر التالي في جهازك الطرفي لإكمال التثبيت:

طلبات تثبيت طلبات شوربة جميلة 4 بانداس

دليل خطوة بخطوة لكشط الجداول خطوة بخطوة

الخطوة 1: فهم بنية الموقع الإلكتروني

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

إليك كيفية ظهور هذا الجدول داخل بنية HTML.

الخطوة 2: إرسال طلب HTTP

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

url = "https://www.scrapethissite.com/pages/forms/"

response = requests.get(url)

if response.status_code == 200:
   print("Page fetched successfully!")
   html_content = response.text
else:
   print(f"Failed to fetch the page. Status code: {response.status_code}")
   exit()

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

في HTML، الجدول هو طريقة منظمة لتقديم البيانات في صفوف وأعمدة، تمامًا كما هو الحال في جدول البيانات. يتم إنشاء الجداول باستخدام <table> ومحتواها مقسم إلى صفوف (<tr>) والخلايا (<td> لخلايا البيانات أو <th> للخلايا الرأسية). إليك تفصيل سريع لكيفية عمل بنية الجدول:

  • الجدول: مغلق داخل <table> تعمل كحاوية لجميع الصفوف والخلايا.
  • الصفوف: كل <tr> (صف الجدول) يمثل شريحة أفقية من الجدول.
  • الخلايا: داخل كل صف, <td> تحتوي على قيم بيانات فردية (أو <th> علامات للرؤوس).
  • السمات: تحتوي الجداول غالبًا على فئات أو معرّفات أو سمات أخرى لتصميمها أو تحديدها.

على سبيل المثال، في هذا النص البرمجي، نحدد موقع <table> مع فئة معينة (صنف="جدول") واستخراج صفوفها وخلاياها باستخدام حساء جميل. يتيح لنا ذلك سحب البيانات بشكل منهجي وإعدادها للتحليل أو الحفظ.

soup = BeautifulSoup(html_content, "html.parser")

table = soup.find("table", {"class": "table"})

if not table:
   print("No table found on the page!")
   exit()

الخطوة 4: حفظ البيانات في ملف CSV

في هذه الخطوة، سنقوم بحفظ بيانات الجدول المستخرجة في ملف CSV لاستخدامها في المستقبل وعرضها أيضًا كإطار بيانات بانداس DataFrame حتى تتمكن من رؤية كيفية تنظيم البيانات. يسمح لك حفظ البيانات كملف CSV بتحليلها لاحقًا في أدوات مثل Excel أو جداول بيانات Google أو Python نفسها.

headers = [header.text.strip() for header in table.find_all("th")]

rows = []
for row in table.find_all("tr", class_="team"):
   cells = [cell.text.strip() for cell in row.find_all("td")]
   rows.append(cells)

df = pd.DataFrame(rows, columns=headers)

csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")

print(f"Data saved to {csv_filename}")

عند تشغيل هذا الرمز، سينشئ بانداس ملفًا باسم كشط_جدول_بيانات_جدول_بيانات.csv في دليل العمل الخاص بك، وستتم طباعة البيانات المستخرجة في وحدة التحكم على النحو التالي:

          اسم الفريق سنة الفوز والخسارة في الوقت بدل الضائع خسارة في الوقت بدل الضائع فوز % أهداف ل (GF) أهداف ضد (GA) + / -
0 بوسطن بروينز 1990 44 24 0.55 299 264 35
1 بوفالو سيبرس 1990 31 30 0.388 292 278 14
2 كالجاري فليمز 1990 46 26 26 0.575 344 263 81
3 شيكاغو بلاكهوكس شيكاغو 1990 49 23 0.613 284 211 73
4 ديترويت ريد وينغز 1990 34 38 0.425 273 298 -25

الرمز الكامل: كشط بيانات الجدول وحفظها

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

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://www.scrapethissite.com/pages/forms/"

response = requests.get(url)

if response.status_code == 200:
    print("Page fetched successfully!")
    html_content = response.text
else:
    print(f"Failed to fetch the page. Status code: {response.status_code}")
    exit()

soup = BeautifulSoup(html_content, "html.parser")

table = soup.find("table", {"class": "table"})

if not table:
    print("No table found on the page!")
    exit()

headers = [header.text.strip() for header in table.find_all("th")]

rows = []
for row in table.find_all("tr", class_="team"):
    cells = [cell.text.strip() for cell in row.find_all("td")]
    rows.append(cells)

df = pd.DataFrame(rows, columns=headers)

csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")

print(df.head())
print(f"Data saved to {csv_filename}")

الخاتمة

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

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

  • تجاوز حدود المعدل: قم بتدوير عناوين IP لتجنب حظرها من قِبل المواقع الإلكترونية لإرسالها الكثير من الطلبات.
  • حافظ على إخفاء هويتك: حافظ على إخفاء هويتك عن طريق إخفاء عنوان IP الحقيقي الخاص بك.
  • الوصول إلى البيانات المقيدة جغرافيًا: استخدم وكلاء بمواقع محددة لكشط المحتوى الخاص بالمنطقة.

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