正则去除xpath取到的所有html标签中的属性

1 篇文章 0 订阅
1 篇文章 0 订阅

因为最近有一些特殊需求,需要剔除xpath取到的所有标签的所有属性。代码如下,有bug可以和我反馈。

import re
from lxml import etree

html = """<div class="box"><h1><strong id="d7" class= "k8">测试</strong></h1><div><p></p></div></div>"""
doc = etree.HTML(html)
msg = doc.xpath("//div[@class='box']")[0]
# 取该div下的所有标签及文本
html_str = etree.tostring(msg, method="html", encoding='utf8').decode("utf-8")
# 正则匹配所有的属性
tag_style = re.findall(r'<[^>]*?(\s.*?)>', html_str)
# 替换所有的属性为""
for tag in tag_style:
	html_str = html_str.replace(tag, '')
print(html_str)

打印结果如下:

<div><h1><strong>测试</strong></h1><div><p></p></div></div>

————————————————分割线——————————————

最近发现第二种方法更为简单,直接上代码, 核心方法为strip_attributes()

    if doc.xpath('//p[@class="keywords"]/a'):
        msg = doc.xpath('//p[@class="keywords"]/a')[0]
        etree.strip_attributes(msg, "{}*")
        result = etree.tostring(msg, method="html", encoding='utf-8').decode()
        return result

返回结果只有标签和文本,没有标签的属性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值