【问题标题】:Remove HTML tag (Python)删除 HTML 标签 (Python)
【发布时间】:2020-12-20 01:09:24
【问题描述】:

我有以下 HTML 代码

<span><s>Something</s>Anything</span>

我想删除 span 标签,返回 HTML 代码

<s>Something></s>

我正在使用 beautifulsoup 库

soup = BeautifulSoup(HTML, 'lxml')
soup.span.unwrap()

但这会返回 -> &lt;s&gt;Something&lt;/s&gt;Anything

【问题讨论】:

  • 还有 HTML 吗?还是仅此而已?
  • 是的,有。但是,我可以处理它们。

标签: python html python-3.x beautifulsoup


【解决方案1】:

如果您想要的只是 &lt;s&gt; 部分,为什么不直接过滤掉而不是删除呢?

例如:

from bs4 import BeautifulSoup

sample = """
<span><s>Something</s>Anything</span>
"""

soup = BeautifulSoup(sample, "lxml")
print(soup.find("s"))

这会让你:

<s>Something</s>

如果您有更多带有&lt;s&gt; 的&lt;span&gt; 标签,您可以这样做:

sample = """
<span><s>Something</s>Anything</span>
<span><s>More of Something</s>Less of Anything</span>
"""
print([t.find("s") for t in soup.find_all("span")])

要得到这个:

[<s>Something</s>, <s>More of Something</s>]

但是,如果你想删除标签,那么你最终会得到一个空的HTML(至少在这个简单的情况下)。

看这个:

from bs4 import BeautifulSoup

sample = """
<span><s>Something</s>Anything</span>
"""

soup = BeautifulSoup(sample, "lxml")

for tag in soup.find_all(True):
    if tag.name == "span":
        tag.extract()
print(soup)

产生这个:

<html><head></head><body>
</body></html>

或者,更短的,带有列表理解:

print([t.extract() for t in soup.find_all("span")])

给:[]

所以,我想,最好的办法是过滤掉不需要的标签。

【讨论】:

  • 感谢您的回答。我想删除 span 标签,因为我想保存没有 span 标签的 HTML 代码。
【解决方案2】:

我尝试了以下代码:

s1 = soup.span.s
soup.span.replaceWith(s1)
print(soup)

输出:

<html><body><s>Something</s></body></html>

【讨论】:

    【解决方案3】:

    你想要&lt;s&gt;标签或&lt;span&gt;的innerHTML?

    第一个答案给你一个代码来获取&lt;s&gt;标签或&lt;s&gt;Something&gt;&lt;/s&gt;

    要获取&lt;span&gt; 的innerHTML 或值&lt;s&gt;Something&lt;/s&gt;Anything,请使用

    spanTag.decode_contents()
    

    【讨论】:

      【解决方案4】:
      from bs4 import BeautifulSoup
      
      with open('home.html', 'r') as html_file:
         content = html_file.read()
      
         soup = BeautifulSoup(content, 'lxml')
         print(soup.prettify()) # this part makes the output look better
      

      【讨论】:

        猜你喜欢
        • 2020-03-08
        • 2017-02-22
        • 2017-07-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 2013-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多