2021-03-13

初始化

from lxml import etree
resp = ''' '''#html文本文件
html = etree.HTML(resp)

节点

 . 代表当前节点 
 ..代表上一级节点【父节点】
 / 代表子级某个节点
 / 代表子级,亲儿子,一层的关系   (指定下一级别搜寻)
 // 代表子级,子孙后代,多层关系  (可跨级别搜寻)
 @  选取属性

检索

属性检索

根据属性具体判断某一个标签,可以通过 标签名[属性值判断式] 来定位,例
如:

.//div[@class=""]

属性值可以为标签内的任何属性,例如div、class、style、href等,包括自定
义属性

包含检索

由于html是标记语言,所以他是没有报错机制以及严格的格式检测。但是xpath有极其严格的语言和检测,所以xpath的书写通常需要包容html的不规则语言。
html标签的id属性具有唯一性,class具有通用性,而且空格是可以随意添加的。如果不能精确匹配到某一个具体的字符串,xpath可以采用包含检测的函数来指定大致的标签。
以检索所有文本内容包含“python”的div标签为例:

.//div[contains(text(),"python")]

与、或、非

在这里插入图片描述

特定标签的选取

[1]

通配标签返回的是一个列表,里面为空或者一些元素。xpath支持取具体值,例如去列表的第一个元素,[1]就可以拿到;第二个值就是[2]。
值得注意的是列表的下角标从1开始,不像python那样从0开始

position()

position函数会返回当前的位置值,拿到值之后就可以对值进行判断选取。
可以利用position函数进行取值筛选,例如取除第一个外,所有div标签:

.//div[position()>1]

last()

取列表最后一个元素

.//div[last()]

position()返回的是当前标签的位置号,last()也是返回当前标签的最后一个位置号,所以他们可以进行比较

Xpath的轴

仅记录一些实用轴
following || 选取文档中当前节点的结束标签之后的所有节点。
preceding || 选取文档中当前节点的开始标签之前的所有节点。
ancestor || 选取当前节点的所有先辈(父、祖父等)。
descendant || 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self || 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
attribute || 选取当前节点的所有属性。
具体使用:

html.xpath(".//div/ancestor::*")#选取当前节点的所有先辈(父、祖父等),向上的一个全局检索
html.xpath(".//table/attribute::*")# attribute 选取当前节点的所有属性。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值