اذهب إلى المحتوى
  • 0

كيفية العثور على كل الأصناف classes الموجودة ضمن URL محدد، باستخدام BeautifulSoup في بايثون

إياد أحمد

السؤال

Recommended Posts

  • 1

بشكل عام يمكنك الحصول على جميع الأصناف الموجودة ضمن أي رابط بالشكل التالي:

# استيراد الوحدات اللازمة
from bs4 import BeautifulSoup
import requests
# تحديد الموقع الهدف
URL = "https://en.wikipedia.org/wiki/2019_Ballon_d%27Or"
# والحصول على كائن الاستجابة URL طلب عنوان 
responseObj = requests.get(URL)
# BeautifulSoup تحليل النص الذي تم الحصول عليه من خلال 
soup = BeautifulSoup(responseObj.content, 'lxml')
# مجموعة لوضع الأصناف ضمنها
class_set = set()
# الحصول على جميع الوسوم
tags = {tag.name for tag in soup.find_all()}
# المرور على كل الوسوم
for tag in tags:
	# الحصول على جميع عناصر الوسم
	for i in soup.find_all( tag ):
		# class للتحقق فيما إذا كانت تحمل السمة has_attr نستخدم الدالة 
		if i.has_attr( "class" ):
				if len( i['class'] ) != 0:
						class_set.add(" ".join( i['class']))
class_list=list(class_set)
# طباعة بعض منها
print(class_list[0:5])
# ['infobox-data', 'searchButton mw-fallbackSearchButton',
#	 'searchButton', 'mw-portlet mw-portlet-tb vector-menu vector-menu-portal portal',
#  'mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown-noicon vector-menu vector-menu-dropdown']

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

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

from bs4 import BeautifulSoup
import requests

URL = "https://en.wikipedia.org/wiki/2019_Ballon_d%27Or"
response = requests.get(URL).content
soup = BeautifulSoup(response, features='lxml')

# إستخراج العناصر التي لديها الخاصية class
classes = [tag.get('class') for tag in soup.find_all(class_=True)]

# تستطيح القائمة (جعلها تحتوي على عناصر نصية فقط)
classes = sum(classes, [])

# السطر السابق يمكن عملة كالتالي أيضًا
# classes = [item for sublist in classes for item in sublist]

# إزالة كل الأصناف المكرر من خلال إستخدام set
class_set = set(classes)
print(class_set)

"""
{'printfooter', 'wb-langlinks-edit', 
	..... 
'tocsection-2', 'mw-selflink', 'mw-portlet-interaction'}
"""

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...