كشط موقع على شبكة الإنترنت مع هذا البرنامج التعليمي حساء بايثون الجميل

كشط موقع على شبكة الإنترنت مع هذا البرنامج التعليمي حساء بايثون الجميل

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





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





كيفية تركيب حساء جميل والبدء في استخدامه

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





تحويل الكتابة اليدوية إلى برامج نصية مجانية

للبدء ، يجب عليك تثبيت مكتبة Beautiful Soup في بيئتك الافتراضية. يتوفر Beautiful Soup كحزمة PyPi لجميع أنظمة التشغيل ، لذا يمكنك تثبيته باستخدام ملف نقطة تثبيت beautifulsoup4 الأمر عبر المحطة.

ومع ذلك ، إذا كنت تستخدم Debian أو Linux ، فسيظل الأمر أعلاه يعمل ، ولكن يمكنك تثبيته مع مدير الحزم عن طريق التشغيل apt-get install python3-bs4 .



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

لإتاحة هذه المكتبة للمكشطة ، قم بتشغيل ملف طلبات تثبيت النقطة الأمر عبر المحطة.





لاستخدام مكتبة محلل XML ، قم بتشغيل نقطة تثبيت lxml لتثبيته.

افحص صفحة الويب التي ترغب في كشطها

قبل حذف أي موقع ويب لست على دراية به ، من أفضل الممارسات فحص عناصره. يمكنك القيام بذلك عن طريق تبديل المتصفح الخاص بك إلى وضع المطور. من السهل جدًا استخدام Chrome DevTools إذا كنت تستخدم Google Chrome.





ومع ذلك ، من الضروري فحص صفحة ويب لمعرفة المزيد عن علامات HTML والسمات والفئات والمعرفات الخاصة بها. يؤدي القيام بذلك إلى الكشف عن العناصر الأساسية لصفحة الويب وأنواع محتوياتها.

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

كيفية كشط بيانات مواقع الويب باستخدام الحساء الجميل

الآن بعد أن أصبح لديك كل شيء جاهزًا ، افتح محرر كود مفضلًا وأنشئ ملف Python جديدًا ، مع إعطائه اسمًا مختارًا. ومع ذلك ، يمكنك أيضًا الاستفادة من IDEs المستندة إلى الويب مثل Jupyter Notebook إذا لم تكن معتادًا على تشغيل Python عبر سطر الأوامر.

بعد ذلك ، قم باستيراد المكتبات الضرورية:

from bs4 import BeautifulSoup
import requests

أولاً ، دعنا نرى كيف تعمل مكتبة الطلبات:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

عند تشغيل الشفرة أعلاه ، فإنها تُرجع الحالة 200 ، مما يشير إلى نجاح طلبك. بخلاف ذلك ، تحصل على حالة 400 أو بعض حالات الخطأ الأخرى التي تشير إلى فشل طلب GET.

تذكر دائمًا استبدال عنوان URL الخاص بموقع الويب الموجود بين القوسين بعنوان URL المستهدف.

بمجرد الحصول على موقع الويب مع احصل على طلب ، يمكنك بعد ذلك تمريره إلى Beautiful Soup ، والذي يمكنه الآن قراءة المحتوى كملفات HTML أو XML باستخدام محلل XML أو HTML المضمّن ، اعتمادًا على التنسيق الذي اخترته.

ألق نظرة على مقتطف الشفرة التالي لمعرفة كيفية القيام بذلك باستخدام محلل HTML:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

تقوم الشفرة أعلاه بإرجاع DOM الكامل لصفحة الويب بمحتواها.

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

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

يمكنك أيضًا الحصول على المحتوى النقي لصفحة ويب دون تحميل عنصرها بامتداد .نص طريقة:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

كيفية كشط محتوى صفحة ويب باستخدام اسم العلامة

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

على سبيل المثال ، دعنا نرى كيف يمكنك الحصول على المحتوى بتنسيق h2 علامات إحدى صفحات الويب.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

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

سيتم حظر tiktok في الولايات المتحدة
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

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

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

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

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

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

كيفية كشط صفحة ويب باستخدام المعرف واسم الفئة

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

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

دعنا نلقي نظرة على مثال لكيفية كشط محتوى صفحة أدناه باستخدام المعرف:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

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

في الأساس ، يصبح السطر الذي يحتوي على المعرف:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

ومع ذلك ، يمكنك أيضًا كشط صفحة ويب عن طريق استدعاء اسم علامة معينة بمعرفها أو صنفها المقابل:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

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

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

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

تأكد من أنك نقطة تثبيت الباندا عبر المحطة إذا لم تكن قد قمت بذلك بالفعل.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

الكاشطة التي أنشأتها للتو هي وحدة قابلة لإعادة الاستخدام ويمكنك استيرادها واستخدامها في ملف Python آخر. لاستدعاء كشط وظيفة من فئتها التي تستخدمها scrapeit.scrape ('عنوان URL لموقع الويب'، 'price_tag'، 'price_id'، 'shirt_tag'، 'shirt_id') . إذا لم تقدم عنوان URL والمعلمات الأخرى ، فإن ملف آخر يطالبك البيان للقيام بذلك.

لاستخدام هذه الورقة في ملف Python آخر ، يمكنك استيرادها على النحو التالي:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

ملحوظة: مكشطة هو اسم ملف Python الذي يحتفظ بفئة الكاشطة.

يمكنك أيضًا التحقق من توثيق حساء جميل إذا كنت تريد التعمق أكثر في كيفية تحقيق أقصى استفادة منه.

الشوربة الجميلة هي أداة قيمة في تجريف الويب

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

قم بتشغيل الألعاب القديمة على نظام التشغيل windows 10

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

يشارك يشارك سقسقة بريد الالكتروني أفضل أدوات تجريف الويب عبر الإنترنت

هل تحتاج إلى جمع البيانات من مواقع الويب لأغراض تحليلية؟ أدوات تجريف الويب هذه تجعل الأمر سهلاً.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • بايثون
نبذة عن الكاتب إديسو أوميسولا(94 مقالة منشورة)

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

المزيد من Idowu Omisola

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك