20 xpath技术和lxml模块

1.xpath介绍

1.1 Xpath基本概念

  • Xpath(xml path language)是一种XML的查询语言,能在XML树状结构中寻找节点。xpath用于XML文档,通过查询元素或属性进行导航。
  • xml是一种标记语法的文本格式,用于存储和扩展。html是超文本格式。lxml是python的一个包,这个包中包含了将html文本转成xml
    对象,和对对象执.xpath的功能

1.2 节点的介绍

<bookstore>
<book>
    <title lang='eng'>Harry Potter</title>
    <author>J K.Rowing</author>
    <year>2005</year>
    <price>29<price>
</book>
</bookstore>

<book>文档节点
<author>J K.Rowing</author>元素节点
<lang='eng'>属性节点

父Parent  book元素是 title author year price元素的父
字Children  零个一个或者多个,title author year price 都是book元素的子

同胞Sibling  拥有相同父的节点
title author year price 这些元素都是同胞

先辈Ancestor 某节点的父 父的父
title元素的先辈是 book bookstore

2. 基本使用

2.1 工具安装

在这里插入图片描述
安装方式参考网站:
https://blog.csdn.net/qq_31082427/article/details/84987723
安装后,打开XPath Helper的快捷键为 ctrl+shift+x

在这里插入图片描述
双斜杠//和@的使用案列
在这里插入图片描述

单斜杠/的使用案列
在这里插入图片描述
在这里插入图片描述
选取第N页的页脚元素,用span【N】
在这里插入图片描述
选取最前面N个元素属于a元素的子元素的b元素,position()<N
在这里插入图片描述

2.2 模块的使用

在Python中,我们安装lxml库来使用XPath 技术。lxml 是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据。
==首先导入lxml模块中的etree(from lxml import etree),利用方法etree.HTML(html),将html的字符串转化为Element对象,然后使用etree.tostring将Element对象转化成二进制类型,然后再对所获得的二进制类型用.decode(不用输入utf-8)编码,对其进行补全(把不规则的html的字符串补全,二进制类型转为字符串类型、格式排版优化)

from lxml import etree
wb_data = """
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a>
             </ul>
         </div>
        """
Html = etree.HTML(wb_data)
print(Html)

r = etree.tostring(Html)
# 没有进行编码前,打印出的html杂乱无序,
print(r)

# 进行了编码后,打印出的html整齐
r = r.decode()
print(r)

lxml python 官方文档:http://lxml.de/index.html
可用 pip 安装:pip install lxml
lxml 可自动修正 html 代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值