爬虫数据清洗之html标签删除

这个博客介绍了如何使用Python的lxml和html库来删除指定的HTML元素。提供的`delete_e`函数接受一个HTML字符串、旧的XPath表达式和一个要删除的XPath列表。它遍历列表并移除匹配的元素,最后返回处理后的HTML内容。示例中展示了如何删除特定`p`标签。
摘要由CSDN通过智能技术生成

删除指定的元素标签

from lxml import etree
import html

def delete_e(d,old_xpath,xpath_list):
    '''
    :param d: 要删除html标签
    :param old_xpath: 最后一级定位标签
    :param xpath_list: 要删除的标签元素集合
    :return: 返回删除后的标签元素
    '''
    content= etree.HTML(d)
    for a in xpath_list:
        try:
            delem=content.xpath(a)[0]
            delem.getparent().remove(delem)
        except:
            pass

    content = content.xpath(old_xpath)[0]
    content = etree.tostring(content, pretty_print=True).decode('utf-8')
    desc = html.unescape(content)
    return desc

例子:
content = response.xpath(’//div[@id=“zoom”]’).extract_first()


   <!-- 假设content的html结构如下:-->
    <div id='zoom'>
        <p> p标签1 </p>
        <p> p标签2 </p>
        <p> p标签3 </p>
        <div> div 标签1 </div>
        <div> div 标签2 </div>
        <span> span标签 </span>
    <di>
   <!--  此时,假设要删除p标签3,使用方法如下:
    只需将xpath定位取出的标签代码赋值给d,将xpath语句的最后一级赋值给old_xpath,
    注意:content的xpath语句只有一级,也就只有一个div,所有不用更改,若xpath语句是 //div[@id="zoom"]/div,则赋值给old_xpath的是'//div'-->
 

content = delete_e(d=content, old_xpath=’//div[@id=“zoom”]’, xpath_list=[’//p[3]’])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值