从 HTML 标签中删除属性

发布于 2024-11-30 23:18:52 字数 810 浏览 0 评论 0原文

可能的重复:
php:如何从 html 标记中删除属性?
如何迭代Beautiful Soup 元素的 HTML 属性?

我有一些如下所示的 HTML:

<div class="foo">
  <p id="first">Hello, world!</p>
  <p id="second">Stack Overflow</p>
</div>

它需要返回如下:

<div>
  <p>Hello, world!</p>
  <p>Stack Overflow</p>
</div>

我更喜欢 Python 解决方案,因为我已经在需要的程序中使用 BeautifulSoup被使用不过,如果 PHP 是更好的解决方案,我愿意接受。我认为 sed 正则表达式还不够,特别是将来可能使用 <文本中的符号(我不控制输入)。

Possible Duplicates:
php: how can I remove attributes from an html tag?
How do I iterate over the HTML attributes of a Beautiful Soup element?

I have some HTML like the following:

<div class="foo">
  <p id="first">Hello, world!</p>
  <p id="second">Stack Overflow</p>
</div>

And it needs to come back as this:

<div>
  <p>Hello, world!</p>
  <p>Stack Overflow</p>
</div>

I'd prefer a Python solution, as I'm already using BeautifulSoup in the program it needs to be used in. However, I'm open to PHP if that's a better solution. I don't think a sed regular expression would be enough, especially with the possible future use of the < symbol in the text (I don't control the input).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

匿名的好友 2024-12-07 23:18:52

这也适用于 sed,
<([a-zA-Z!]+)[^>]+>
然后将其替换为第一组,例如
<\1>

this works also with sed,
<([a-zA-Z!]+)[^>]+>
then just replace by the first group like,
<\1>

乖乖兔^ω^ 2024-12-07 23:18:52

在 Python 中,通过使用 Lxml 可以轻松实现这一点。

首先安装 Lxml 并尝试以下代码:

from lxml.html import tostring, fromstring

html = '''
<div class="foo">
  <p id="first">Hello, world!</p>
  <p id="second">Stack Overflow</p>
</div>'''

htmlElement = fromstring(html)
for element in htmlElement.cssselect(''):
    for key in element.keys():
        element.attrib.pop(key)

result = tostring(htmlElement)

print result

This is easily possible in Python by using Lxml.

First install Lxml and try the following code:

from lxml.html import tostring, fromstring

html = '''
<div class="foo">
  <p id="first">Hello, world!</p>
  <p id="second">Stack Overflow</p>
</div>'''

htmlElement = fromstring(html)
for element in htmlElement.cssselect(''):
    for key in element.keys():
        element.attrib.pop(key)

result = tostring(htmlElement)

print result
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文