网站建设网站模板,移动互联网应用软件开发,wordpress怎样添加二级导航菜单,设计制作合同交印花税吗lxml模块是Python的一个解析库#xff0c;主要用于解析HTML和XML文件。
一、安装导入
使用包管理器安装#xff0c;在cmd下或编辑器下的控制台#xff0c;运行#xff1a;
pip install lxml
导入#xff1a;
from lxml import etree
二、xpath基础知识
XPath#…lxml模块是Python的一个解析库主要用于解析HTML和XML文件。
一、安装导入
使用包管理器安装在cmd下或编辑器下的控制台运行
pip install lxml
导入
from lxml import etree
二、xpath基础知识
XPathXML Path Language即XML路径语言是一种在XML文档中查找信息的语言。它基于XML的树状结构使用路径表达式来选取XML文档中的节点或节点集
//:代表寻找所有如//div找到的就是页面所有的div标签/:代表从根节点找一个寻找属性如//div[class123]找到的是所有class属性值为123的标签 也可以寻找属性值//div/class。找到的是所有div的class属性值 可以结合节点选择器使用如 //book[price35] 表示选择所有 price 属性值大于35的 book 元素。
当前节点使用点 . 表示选取当前节点。父节点使用两个点 .. 表示选取当前节点的父节点。* 匹配任何元素名。例如//* 表示选择文档中的所有元素。* 匹配任何属性名。例如//book[*] 表示选择所有具有至少一个属性的 book 元素。谓词用于进一步筛选满足条件的节点它被嵌在方括号 [] 中。例如/root/child[1] 表示选择 root 元素的第一个 child 子元素。谓词可以使用比较运算符如 、!、、 等、逻辑运算符如 and、or、not和XPath函数如 last()、position()、starts-with()、contains() 等。child:: 选择当前节点的子元素节点。attribute:: 选择当前节点的属性。descendant:: 选择当前节点的所有后代节点。parent:: 选择当前节点的父节点。ancestor:: 选择当前节点的所有祖先节点。following-sibling:: 选择当前节点之后的同级节点。preceding-sibling:: 选择当前节点之前的同级节点
三、案例
比如我们有一个数据
html_data
divulli classitem-0a hreflink1.htmlfirst item/a/lili classitem-1a hreflink2.htmlsecond item/a/lili classitem-inactivea hreflink3.htmlspan classboldthird item/span/a/lili classitem-1a hreflink4.htmlfourth item/a/lili classitem-0a hreflink5.htmlfifth item/a/ul
/div我们可以看出这个数据并不是一个完整的html的结构但是xpath需要通过结构路径寻找节点所以我们需要补全结构而且要把这个数据解析为element对象才可以通过xpath对其操作所以我们用到以下语法
htmletree.HTML(html_data)
etree.HTML()将字符串形式的HTML代码解析为Element对象。该函数会自动补全缺失的标签并尝试修正HTML代码中的错误。括号中是要解析的数据html是他解析后返回的element对象。
接下来我们就可以对这个数据进行操作了
案例1
拿到第二个li的class值
html.xpath(//li[2]/class)
案例2
拿到最后一个li的a标签的href属性值
html.xpath(//li[last()]/a/href) 案例3
根据属性值获取元素内容
html.xpath(//li/a[hreflink1.html]/text())