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

كيفية إيجاد أبناء العقد باستخدام BeautifulSoup في بايثون

إياد أحمد

السؤال

Recommended Posts

  • 0

يمكنك القيام بذلك من خلال إيجاد الإمساك بالوسم li ثم الحصول على الوسوم الأبناء a من خلال الدالة findChildren كما يلي:

# استيراد الوحدات اللازمة
from bs4 import BeautifulSoup
html="""<div>
<li class="c">
    <a>linkA</a>
    <ul> 
       <li>  
          <a>linkB</a> 
       </li>
    </ul>
</li>
</div>
"""
# BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال 
soup = BeautifulSoup(html, 'html.parser')
# c ذو الكلاس li إيجاد الوسم 
li = soup.find('li', {'class': 'c'})
# الأبناء a لإيجاد الوسوم 
# findChildren نستخدم الدالة 
children = li.findChildren("a" , recursive=True)
# الآن نقوم بطباعتهم
for child in children:
    print(child)
"""
<a>linkA</a>
<a>linkB</a>
"""

 

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

  • 0

تحتوي مكتبة BeautifulSoup على التابع select و select_one والذي يقبل كلًا منهما محدد CSS وبالتالي يمكنك أن تقوم بتحديد كل عناصر a الموجودة داخل عناصر li كالتالي:

from bs4 import BeautifulSoup
content="""<div>
<li class="c">
    <a>linkA</a>
    <ul> 
       <li>  
          <a>linkB</a> 
       </li>
    </ul>
</li>
</div>
"""

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

anchors = soup.select('li a')
print(anchors)  # [<a>linkA</a>, <a>linkB</a>]

التابع select يقوم بتحديد كل العناصر المطابقة لمحدد CSS، بينما التابع select_one يقوم بإرجاع أول عنصر يجده فقط.

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...