5.xpath解析
Posted Mrs.King_UP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.xpath解析相关的知识,希望对你有一定的参考价值。
-
xpath是XML文档中搜索内容的一门语言,html是XML的一个子集
xpath(XML Path Language),即 XML 路径语言,最初设计是用来搜寻XML文档的,但是它同样适用于 HTML 文档的搜索,通过 Python 的 LXML 库利用 XPath 进行 HTML 的解析,使用路径表达式来选取XML文档中的节点和节点集,节点是通过沿着路径来选取的
from lxml import etree
-
常用规则:
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
… 选取当前节点的父节点
@选取属性eg:
//title[@lang=’eng’] 选择所有名称为title,且属性为lang=eng的节点, -
<book>
<id>1</id>
<name>野花遍地看</name>
<price>1.23</price>
<author>
<nick>周大强</nick>
<nick>周芷若</nick>
</author>
</book> -
语法规则:通过节点间的结构关系找
/book/price -
安装lxml:pip install lxml -I xxxxx
-
xpath解析-1:
from lxml import etree
tree=etree.XML()
- tree.xpath(’/book/name/text()’) #text()拿出来其中的文本 ,使用list列表返回,/表示儿子
- tree.xpath(’/book/author//nick/text()’) # //表示找author节点的后代中为nick的节点,并取其中的值(这个后代包括儿子和孙子)
- tree.xpath(‘/book/name/*/nick/text()’) # *表示任意节点,通配符
- xpath解析-2:
tree=etree.parse(“a.html”)#加载html文件
- tree.xpath(‘/html/body/ul/li[1]/a/text()’) #只获取其中的第一个li,xpath从1开始
- tree.xpath(‘/html/body/ol/li/a[@href=”dapao”]/text()’)# 获取具有属性href且href=”dapao”的a标签的文本
- list_li=tree.xpath(‘html/body/ol/li’) #获取li的列表
for li in list_li:
#从每一个li中提取文字信息
li.xpath(‘./a/text()’) # 在li中继续寻找,为相对路径,为./的形式
li.xpath(‘./a/@href’)# 获取a标签的href的属性值 - tree.xpath(‘/html/body/ul/li/a/@href’) #获取a中该属性的值
- 从检查中直接复制xpath:首先定位到元素的位置,再通过右键检查,右键有复制xpath
- xpath实现猪八戒官网信息爬取
- 轴
ancestor 选取当前节点的所有父辈
ancestor-or-self选取当前节点的所有父辈和当前节点
attribute 选取当前节点的所有属性
child选取当前节点的所有子元素
以上是关于5.xpath解析的主要内容,如果未能解决你的问题,请参考以下文章