[英]Can I remove tags whose “style” attributes have specific value, then all attributes of tags in BeautifulSoup?
原始的BeautifulSoup對象如下所示:
<p style="padding-left: 140pt;text-indent: 0pt;line-height: 13pt;text-align: center;">blahblah</p>
<ul>
<li style="padding-left: 11pt;text-indent: 0pt;line-height: 14pt;text-align: left;">
<p style="display: inline;">blahblah</p>
</li>
<li style="padding-left: 11pt;text-indent: 0pt;line-height: 14pt;text-align: left;">
<p style="text-indent: 0pt;text-align: center;">blahblah</p>
</li>
</ul>
我要做的第一步是刪除所有樣式屬性包括中心text-align的標簽:
<ul>
<li style="padding-left: 11pt;text-indent: 0pt;line-height: 14pt;text-align: left;">
<p style="display: inline;">blahblah</p>
</li>
<li style="padding-left: 11pt;text-indent: 0pt;line-height: 14pt;text-align: left;">
</li>
</ul>
然后第二步是刪除所有樣式屬性:
<ul>
<li>
<p>blahblah</p>
</li>
<li>
</li>
</ul>
也許上面的例子有些奇怪。 但是問題是:盡管可以很容易地在BeautifulSoup對象中找到一個或多個標簽,但我們能找到一種簡單的方法來操作BeautifulSoup對象本身嗎? 如果知道標簽的位置,則可以輕松地將其從BeautifulSoup對象中刪除。 例如,如果要刪除第二個<li>
標記,可以使用soup.ul.li
指向第一個<li>
標記,然后使用.next_sibling
移至第二個<li>
標記,然后使用.decompose()
將其從BeautifulSoup對象中刪除。 但是,如果我不知道要刪除的標簽的位置,只知道這些標簽應符合的條件,似乎無法找出這些標簽的確切位置,然后對BeautifulSoup對象進行操作。
您可以使用re
包來匹配text-align: center
in style
屬性。 然后,您可以通過簡單地檢查style
屬性的存在來刪除它。
碼:
from bs4 import BeautifulSoup as soup
import requests
import re
html = """<p style="padding-left: 140pt;text-indent: 0pt;line-height: 13pt;text-align: center;">blahblah</p>
<ul>
<li style="padding-left: 11pt;text-indent: 0pt;line-height: 14pt;text-align: left;">
<p style="display: inline;">blahblah</p>
</li>
<li style="padding-left: 11pt;text-indent: 0pt;line-height: 14pt;text-align: left;">
<p style="text-indent: 0pt;text-align: center;">blahblah</p>
</li>
</ul>"""
page = soup(html, 'html.parser')
style_center = page.find_all(style=re.compile('text-align: center'))
for style in style_center:
style.decompose()
for tag in page.find_all():
if 'style' in tag.attrs:
del tag.attrs['style']
print(page)
OUTPUT:
<ul>
<li>
<p>blahblah</p>
</li>
<li>
</li>
</ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.