إياد أحمد نشر 26 نوفمبر 2021 أرسل تقرير نشر 26 نوفمبر 2021 أريد الحصول على جميع وسوم ال <script> في مستند ثم معالجة كل واحدة بناءً على وجود أو عدم وجود سمات (attributes) معينة. على سبيل المثال إذا كانت السمة bar موجودة ضمن الوسم script أريد أن يتم تنفيذ شيء محدد وهكذا.. كيف يمكن أن أقوم بمثل هذا الأمر؟ 2 اقتباس
0 Ali Haidar Ahmad نشر 26 نوفمبر 2021 أرسل تقرير نشر 26 نوفمبر 2021 يمكنك الحصول على كل وسوم 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 سامح أشرف نشر 27 نوفمبر 2021 أرسل تقرير نشر 27 نوفمبر 2021 يمكنك إستخدام التابع 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') اقتباس
السؤال
إياد أحمد
أريد الحصول على جميع وسوم ال <script> في مستند ثم معالجة كل واحدة بناءً على وجود أو عدم وجود سمات (attributes) معينة. على سبيل المثال إذا كانت السمة bar موجودة ضمن الوسم script أريد أن يتم تنفيذ شيء محدد وهكذا..
كيف يمكن أن أقوم بمثل هذا الأمر؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.