【发布时间】:2019-03-12 17:02:04
【问题描述】:
原来的 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>
我要做的第一步是删除所有样式属性包含中心文本对齐的标签:
<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>
那么第二步就是去掉所有的style属性:
<ul>
<li>
<p>blahblah</p>
</li>
<li>
</li>
</ul>
也许上面的例子有点奇怪。但问题是:虽然很容易在 BeautifulSoup 对象中找到一个标签(或多个标签),但我们能找到一种简单的方法来操作 BeautifulSoup 对象本身吗?如果我知道标签的位置,我可以轻松地将它从 BeautifulSoup 对象中删除。比如我想去掉第二个<li>标签,我可以用soup.ul.li指向第一个<li>标签,然后用.next_sibling移动到第二个,再用.decompose()去从 BeautifulSoup 对象中删除它。但是如果我不知道要删除的标签的位置,只知道这些标签应该满足的条件,似乎没有办法找出这些标签的确切位置,然后对 BeautifulSoup 对象进行操作。
【问题讨论】:
标签: python beautifulsoup