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

حذف عنصر ابن child باستخدام BeautifulSoup في بايثون

إياد أحمد

السؤال

كيفية حذف عنصر ابن child (عنصر فرعي) ضمن ملف، على سبيل المثال في الملف التالي:

"""
<!DOCTYPE>
<html>
<head><title>html</title></head>
<body>
<div id="x">
<p>
	This is child of div with id = "x".
	<span>Child of "P"</span>
</p>
<div>
Another Child of div with id = "x".
</div>
</div>	
<p>
aaadas
</p>					
</body>
</html>
"""

 

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

Recommended Posts

  • 0

يمكنك استخدام إحدى الدوال التالية:
decompose : يقوم بإزالة الوسم من شجرة مستند HTML المحدد، ثم يدمرها تماماً مع محتوياتها.
clear: تقوم بحذف الوسم من شجرة مستند HTML المحدد.

# استيراد المكتبة
from bs4 import BeautifulSoup
# المستند المراد تعديدله
htmlDoc ="""
<!DOCTYPE>
<html>
<head><title>html</title></head>
<body>
<div id="x">
<p>
	This is child of div with id = "x".
	<span>Child of "P"</span>
</p>
<div>
Another Child of div with id = "x".
</div>
</div>	
<p>
aaadas
</p>					
</body>
</html>
"""
# BeautifulSoup تحليل الملف  من خلال 
soup = BeautifulSoup(htmlDoc, 'html.parser')
# إيجاد الوسم 
e = soup.find('div')
# حذف العنصر الفرعي 
e.decompose()
print(e)
# <None></None>

في حال استخدام clear:

soup = BeautifulSoup(htmlDoc, 'html.parser')
# إيجاد الوسم 
e = soup.find('div')
# حذف العنصر الفرعي 
e.clear()
print(e)
# <div id="x"></div>

 

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

  • 0

يمكن أيضًا إستعمال التابع extract والذي يقوم بإستخراج العنصر من المستند:

from bs4 import BeautifulSoup

content = """<!DOCTYPE html>
<html>
    <head><title>html</title></head>
    <body>
        <div id="x">
            <p>
                This is child of div with id = "x".
                <span>Child of "P"</span>
            </p>
            <div>
                Another Child of div with id = "x".
            </div>
        </div>	
        <p>
            aaadas
        </p>					
    </body>
</html>
"""

soup = BeautifulSoup(content, features='lxml')
e = soup.select_one('div#x')    # تحديد العنصر من خلال محدد CSS

# إزالة العنصر من الصفحة
e.extract()

# المستند بعد إزالة العنصر منه
print(soup.prettify())

"""
<!DOCTYPE html>
<html>
 <head>
  <title>
   html
  </title>
 </head>
 <body>
  <p>
   aaadas
  </p>
 </body>
</html>
"""


# العنصر الذي تم إزالته
print(e.prettify())
"""
<div id="x">
 <p>
  This is child of div with id = "x".
  <span>
   Child of "P"
  </span>
 </p>
 <div>
  Another Child of div with id = "x".
 </div>
</div>
"""

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...