美文网首页
xpath使用笔记

xpath使用笔记

作者: 北游_ | 来源:发表于2018-05-13 14:09 被阅读24次

xpath学习笔记

xpath简介

  1. xpath 用于在XML文档中通过元素和属性进行导航
  2. xpath 使用路径表达式来选取 XML 或 HTML 中的节点或者节点集。

xpath 节点

  1. 在 xpath 中 有七种类型的节点:
  • 元素
  • 属性
  • 文本
  • 命名空间
  • 处理指令
  • 注释
  • 文档根节点
  1. 节点关系
  • 父级
  • 子级
  • 同辈级
  • 先辈级
  • 后代级

xpath 语法

表达式 描述 语法示例
nodename 选取此节点的所有子节点,用户选取标签名 book
/ 从根节点选取 /book
// 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 //price 选择任意位置的 price 标签
. 选取当前节点 --
.. 选取当前节点的父节点 --
@ 选取属性 //@lang 选择lang标签的所有属性
[n] 选取属于某元素下的第n个子元素,索引从1开始 /bookstore/book[2]
[last()] 选取属于某个元素的最后一个元素 /book[last()] last() 当作函数理解
[last()-1] 选取属于某个元素的最后一个元素 /book[last()-1]
[position()] 做元素定位使用 /book[position()<3 选择最前面两个的book元素]
[@lang] 选择有属性为lang的元素 //book[@lang] 选择有lang属性的book标签
[@class=""] 选择class属性为某个值的元素 //div[@class="item"] 选择类名为item的div标签
* 匹配任何元素节点 --
@* 匹配任何属性节点 --
| 表示"或" //bookstore/book/title|//bookstore/book/price 表示匹配文章中 bookstore 下 book 标签下的 title 或这 price 标签

语法示例:

from lxml import etree

html = '''
<bookstore> 
  <book price="100" category="cooking"> 
    <title lang="en">Everyday Italian</title>  
    <author>Giada De Laurentiis</author>  
    <year>2005</year>  
    <price>30.00</price> 
  </book>  

  <book category="children"> 
    <title lang="cn">Harry Potter</title>  
    <author>J K. Rowling</author>  
    <year>2005</year>  
    <price>29.99</price> 
  </book>  

  <book category="web"> 
    <title category="web">XQuery Kick Start</title>  
    <author>James McGovern</author>  
    <author>Per Bothner</author>  
    <author>Kurt Cagle</author>  
    <author>James Linn</author>  
    <author>Vaidyanathan Nagarajan</author>  
    <year>2003</year>  
    <price>49.99</price> 
  </book> 

  <book category="web" cover="paperback" price="100"> 
    <title>Learning XML</title>  
    <author>Erik T. Ray</author>  
    <year>2003</year>  
    <price>39.95</price> 
  </book> 

</bookstore>

'''
# 将字符串转为html对象
html = etree.HTML(html)


# 获取bookstore下book标签的title标签
res = html.xpath('//bookstore/book/title')
print(res)
# 返回值(列表中是对象):[<Element title at 0x25c54df7388>, <Element title at 0x25c54df73c8>, <Element title at 0x25c54df7448>, <Element title at 0x25c54df7488>]

# 获取bookstore下book标签的title标签中category属性值为“web”
res = html.xpath('//bookstore/book/title[@category="web"]')
print(res)
# 返回值(列表中是对象):[<Element title at 0x1f0ec727388>]

# 获取bookstore下book标签的title标签中category属性值为“web”的标签的值
res = html.xpath('//bookstore/book/title[@category="web"]/text()')
print(res)
# 返回值(列表中是字符串):['XQuery Kick Start']

# 获取bookstore下book的price属性为100的标签下的title()标签的值
res = html.xpath('//bookstore/book[@price="100"]/title/text()')
print(res)
# 返回值(列表中的是字符串):['Everyday Italian', 'Learning XML']

# 获取bookstore 下book下第1个标签的所有属性 [1]:表示选择第几个标签 @*:表示选择所有的属性
res = html.xpath('//bookstore/book[1]/@*')
print(res)
# 返回值(列表中是字符串)

# 获取bookstore 下book带有任意属性的标签
res = html.xpath('//bookstore/book[@*]')
print(res)
# 返回值 (列表中的是对象):[<Element book at 0x17a7fb47388>, <Element book at 0x17a7fb473c8>, <Element book at 0x17a7fb47448>, <Element book at 0x17a7fb47488>]

# 获取带有属性的title元素的值
res = html.xpath('//title[@*]/text()')
print(res)
# 返回值(列表中的是字符串):['Everyday Italian', 'Harry Potter', 'XQuery Kick Start']

# 获取book下的 title 和 price 标签
res = html.xpath('//book/title | //book/price')
print(res)
# 返回值:(列表中的是对象):[<Element title at 0x256dc8773c8>, <Element price at 0x256dc877448>, <Element title at 0x256dc877488>, <Element price at 0x256dc8774c8>, <Element title at 0x256dc877508>, <Element price at 0x256dc877548>, <Element title at 0x256dc877588>, <Element price at 0x256dc8775c8>]

# 获取book有category或price属性的值
res = html.xpath('//book/@category | //book/@price')
print(res)
# 返回值 (列表中的是字符串):['100', 'cooking', 'children', 'web', 'web', '100']

补充:

  • items.xpath('.//div[starts-with(@class, "item")]')
    表示div的 class 属性以 item 开头

相关文章

  • xpath使用笔记

    xpath学习笔记 xpath简介 xpath 用于在XML文档中通过元素和属性进行导航xpath 使用路径表达式...

  • 2018-09-03+04XPath和IDEA

    课堂笔记 XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: IDEA 1.在线使用git导入...

  • python爬虫之xpath

    一. python使用xpath 使用时先安装 lxml 包 二. xpath简介 XPath,全称 XML Pa...

  • Python爬虫-数据解析学习笔记之xpath

    1、xpath学习笔记 1)xpath描述   xpath(XML Path Language)是一门在XML和H...

  • 2018-09-04第二十天

    2018-09-03+04XPath和IDEA 课堂笔记 XPath轴(XPath Axes)可定义某个相对于当前...

  • lxml结合xpath注意事项

    1.使用Xpath语法,应该使用Element.xpath方法,来执行xpath选择 示例代码如下: 2.获取某个...

  • python爬虫之XPath解析

    XPath 简介: XPath 是一门在 XML 文档中查找信息的语言 什么是 XPath? XPath 使用路径...

  • Python爬虫(十三)_案例:使用XPath的爬虫

    本篇是使用XPath的案例,更多内容请参考:Python学习指南 案例:使用XPath的爬虫 现在我们用XPath...

  • XPath

    XPath 简介 什么是 XPath?XPath 使用路径表达式在 XML 文档中进行导航XPath 包含一个标准...

  • 爬虫解析库XPath使用

    爬虫解析库XPath使用 1.XPath简介 XPath 是一门在 XML 文档中查找信息的语言。XPath 用于...

网友评论

      本文标题:xpath使用笔记

      本文链接:https://www.haomeiwen.com/subject/izlldftx.html