Xpath

xpath

xpath常用规则

表达式 描述
nodename 当前所有节点
/ 从当前节点选取直接子孙节点
// 从当前节点选取子孙节点
. 选取当前节点
选取当前节点的父节点
@ 选取属性

xpath通配符

通配符 描述 举例 说明
* 匹配任何元素节点 xpath(‘div*’) 匹配div下所有子节点
@* 匹配任何属性节点 xpath(‘div[@*]’) 匹配带有div属性的子节点
node() 匹配任何节点

xpath选取多个路径

表达式 结果
xpath(’.a|.p’) 选取当前节点下的所有a标签和p标签

示例文件xpathHtml.html:




    
    
    
    Document


    
    

GaiLun

biubiubiu

以上面html为例

from lxml import etree

html = etree.parse('./xpathHtml.html',etree.HTMLParser())
resultLi = html.xpath('//div[@class="TheLi"]/ul/li/a/text()')
resultOther = html.xpath('//div[@class="TheOther"]/p/text()')

print(resultLi)
print(resultOther)

说明:
分别对a标签和p标签的内容进行解析,其中text()的作用是将匹配的到的对象转换为字符串。

xpath匹配里标签
练习时遇到如下情况:
Xpath_第1张图片
需要匹配a标签中的href中的字符,使用@href匹配,语法:

tree.xpath('//a[@class="vervideo-lilink actplay"]/@href')

总结
text()是匹配的标签后的字符内容,如
‘//li/div[@class=“vervideo-bd”]/text()’
@href、id、class是匹配的标签的字符内容,如
‘//a[@class=“vervideo-lilink actplay”]/@href’

补充:

  • id 获取id 的属性值
  • starts-with 顾名思义,匹配一个属性开始位置的关键字 – 模糊定位
  • contains 匹配一个属性值中包含的字符串 – 模糊定位
  • text() 函数文本定位
  • last() 函数位置定位

你可能感兴趣的:(Spider)