python爬虫——XPath解析

常用函数

import lxml.etree # etree模块可以自动修正HTML文本

html = lxml.etree.HTML(text='') # 对HTML文本进行解析

from lxml.etree import HTMLParser
parser = HTMLParser()
html = lxml.etree.parse(source='path, str', parser=parser) # 读取文本文件进行解析

result = lxml.etree.tostring(element_or_tree=html) # 修正后的HTML代码

result.decode('utf-8') # 将‘byte’类型数据转换为‘str’类型

html.xpath('') # 选取特定节点

XPath语法

XPath运算符:or、and、mod、|、+、-、*、div、 =、!=、<、<=、>、>=

获取属性值

/@attr:获取attr属性值

/attribute::* :获取所有属性值

获取节点文本

/text():获取当前节点的文本

//text():获取子孙节点的文本

根据属性选取节点

/@attr:选择带attr属性的所有节点

/node[@*]:选取带任意属性的node节点

/node[@attr="attr_value"]:选取attr属性值为attr_value的node节点

/node[contains(@attr, "attr_value")]:选取attr属性值包含attr_value的node节点

根据位置选取节点

/* == /child::* :选取所有子结点

//* == /descendant::* :选取所有子孙节点

/following::*:选取之后的所有节点

/following-sibling::*:选取之后的所有兄弟节点

/.. == /parent::* :选取父节点

/ancestor::* :选取所有祖先节点

从多个匹配节点选取特定次序的节点

/node['position, int']:选取匹配的第position个node节点

/node[last()]:选取匹配的最后一个node节点

/node[last()-'num, int']:选取匹配的最后num+1个node节点

/node[position()<'position, int']:选取匹配的位置小于position的node节点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值