gpt4 book ai didi

python - 去除标签的正确方法,除了 python 中的一些标签

转载 作者:搜寻专家 更新时间:2023-10-31 23:27:28 24 4
gpt4 key购买 nike

例如,我有 HTML 代码,其中包含这样的代码

<a href="some" class="some" onclick="return false;">anchor</a>
<table id="some">
<tr>
<td class="some">
</td>
</tr>
</table>
<p class="" style="">content</p>

我想删除所有标签属性并只保存一些标签(例如,删除表、tr、tr、th 标签),所以,我想得到这样的东西。

<a href="some">anchor</a>
<table>
<tr>
<td>

</td>
</tr>
</table>
<p>content</p>

我使用 for 循环执行此操作,但我的代码会检索每个标签并对其进行清理。我认为我的方式很慢。

你能给我什么建议?谢谢。

更新#1

在我的解决方案中,我使用这段代码来删除标签(从 django 窃取)

def remove_tags(html, tags):
"""Returns the given HTML with given tags removed."""
tags = [re.escape(tag) for tag in tags.split()]
tags_re = '(%s)' % '|'.join(tags)
starttag_re = re.compile(r'<%s(/?>|(\s+[^>]*>))' % tags_re, re.U)
endtag_re = re.compile('</%s>' % tags_re)
html = starttag_re.sub('', html)
html = endtag_re.sub('', html)
return html

这段代码用于清理 HTML 属性

# But this code doesnt remove empty tags (without content ant etc.) like this `<div><img></div>`
import lxml.html.clean

html = 'Some html code'

safe_attrs = lxml.html.clean.defs.safe_attrs
cleaner = lxml.html.clean.Cleaner(safe_attrs_only=True, safe_attrs=frozenset())
html = cleaner.clean_html(html)

最佳答案

使用beautifulsoup .

html = """
<a href="some" class="some" onclick="return false;">anchor</a>
<table id="some">
<tr>
<td class="some">
</td>
</tr>
</table>
<p class="" style="">content</p>
"""

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)

del soup.table.tr.td.attrs
del soup.table.attrs
print(soup.prettify())

<html>
<body>
<a class="some" href="some" onclick="return false;">
anchor
</a>
<table>
<tr>
<td>
</td>
</tr>
</table>
<p class="" style="">
content
</p>
</body>
</html>

清除标签:

soup = BeautifulSoup(html)

soup.table.clear()
print(soup.prettify())

<html>
<body>
<a class="some" href="some" onclick="return false;">
anchor
</a>
<table id="some">
</table>
<p class="" style="">
content
</p>
</body>
</html>

删除特定属性:

soup = BeautifulSoup(html)

td_tag = soup.table.td
del td_tag['class']
print(soup.prettify())

<html>
<body>
<a class="some" href="some" onclick="return false;">
anchor
</a>
<table id="some">
<tr>
<td>
</td>
</tr>
</table>
<p class="" style="">
content
</p>
</body>
</html>

关于python - 去除标签的正确方法,除了 python 中的一些标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com