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

اختبار وجود سمة Attribute معينة ضمن وسم Tag محدد باستخدام BeautifulSoup في بايثون

إياد أحمد

السؤال

أريد الحصول على جميع وسوم ال <script> في مستند ثم معالجة كل واحدة بناءً على وجود أو عدم وجود سمات (attributes) معينة.  على سبيل المثال إذا كانت السمة bar موجودة ضمن الوسم script أريد أن يتم تنفيذ شيء محدد وهكذا..
كيف يمكن أن أقوم بمثل هذا الأمر؟

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

Recommended Posts

  • 0

يمكنك الحصول على كل وسوم script من خلال الدالة findAll ثم معالجة كل واحدة بشكل منفصل من خلال حلقة تقوم بالمرور عليهم. ولاختبار وجود سمة معينة ضمن الوسم (مهما كان نوعه) نستخدم الدالة has_attr. وبالتالي يكون الحل الذي تحتاجه بالشكل التالي:

# استيراد الوحدات اللازمة
from bs4 import BeautifulSoup
import requests
#  تحديد العنوان الهدف
url="https://de.wikipedia.org/wiki/Lionel_Messi"
# GET ارسال طلب 
request = requests.get(url)
# استخراج المحتويات
htmldata=request.text
# BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال 
soup = BeautifulSoup(htmldata, 'html.parser')
# script استخراج كل وسوم 
scripts = soup.findAll('script')
for script in scripts:
    # اختبار فيما إذا كانت السمة المحددة موجودة
    if script.has_attr('your_attribute'):
	# تنفيذ ماتحتاجه من تعليمات في حال وجودها
        do_something()       

 

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

  • 0

يمكنك إستخدام التابع select والذي يقبل محدد CSS، وفي لغة CSS يمكن تحديد العناصر التي لها خاصية معينة من خلال وضعها داخل قوسين، كالتالي:

/* تحديد عنصر div الذي له المعرف root ويحتوي على الخاصية class أيضًا */
div#root[class]
from bs4 import BeautifulSoup
content="""<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <script src="jquery.js" data-src="jquery.min.js"></script>
    <script src="index.js"></script>
</body>
</html>
"""

soup = BeautifulSoup(content, features='lxml')

# تحديد كل عناصر script التي تحتوي على الخاصية data-src
scripts = soup.select('script[data-src]')
print(scripts)  # [<script data-src="jquery.min.js" src="jquery.js"></script>]

كما يمكن تحديد كل عناصر script والمرور عليهم واحد تلو الآخر والتأكد من وجود خاصية معينة أم لا من خلال التابع get والذي يقوم بإعادة قيمة الخاصية في حالة تم العثور عليها أو None في حالة لم تكن موجودة:

# تحديد كل عناصر script
scripts = soup.select('script')

for script in scripts:
    if script.get('data-src'): 
        # في حالة تم العثور على الخاصية
        print('has data-src attribute')
    else:
        # إذا لم يحتوي العنصر على الخاصية
        print('has NO data-src')


 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...