XPath与lxml_3XPath坐标轴

2024-04-28 15:08
文章标签 xpath 坐标轴 lxml 3xpath

本文主要是介绍XPath与lxml_3XPath坐标轴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、XPath坐标轴

坐标轴用以定义当前节点的节点集合。

坐标轴名称含义
ancestor选取当前节点的所有先辈元素及根节点
ancestor-or-self选取当前节点的所有先辈及当前节点本身
attribute选取当前节点的所有属性
child选取当前节点的所有子元素
descendant选取当前节点的所有后代元素
descendant-or-self选取当前节点的所有后代元素即当前节点本身
following选取文档中当前节点的结束标签之后的所有节点
following-sibling选取当前节点之后的所有同级节点
namespace选取当前节点的所有命名空间节点
parent选取当前节点的父节点
preceding选取当前节点的开始标签之前的所有节点
preceding-sibling选取当前节点之前的所有同级节点
self选取当前节点


二、位置路径表达式

位置路径可以是绝对路径,也可以是相对路径。

绝对路径以/开头,每条路径包括一个或多个步,每步之间以/分割;

绝对路径:/step/step/...

相对路径;step/step/...


三、步step

1 步包含三部分

1.1 坐标轴axis:定义所选节点与当前节点之间的关系

1.2 节点测试node-test:识别某个坐标轴内部的节点

1.3 预判predicate:提出预判条件对节点集合进行筛选


2 步语法

坐标轴::节点测试[预判]


3 举例

# child::nodename 选取所有属于当前节点的 book 子元素,等价于 './nodename'
root.xpath('child::book')
root.xpath('./book')# attribute::lang 选取当前节点的 lang 属性,等价于 './@lang'
root.xpath('//*[@lang]')[0].xpath('attribute::lang')
root.xpath('//*[@lang]')[0].xpath('@lang')# child::* 选取当前节点的所有子元素,等价于 './*'
root.xpath('child::*')
root.xpath('./*')# attribute::* 选取当前节点的所有属性,等价于 './@*'
root.xpath('//*[@*]')[0].xpath('attribute::*')
root.xpath('//*[@*]')[0].xpath('@*')# child::text() 选取当前节点的所有文本子节点,等价于 './text()'
root.xpath('child::text()')
root.xpath('./text()')# child::node() 选取当前节点所有子节点,等价于 './node()'
root.xpath('child::node()')
root.xpath('./node()')# descendant::book 选取当前节点所有 book 后代,等价于 './/book'
root.xpath('descendant::book')
root.xpath('.//book')# ancestor::book 选取当前节点所有 book 先辈
root.xpath('.//title')[0].xpath('ancestor::book')# ancestor-or-self::book 选取当前节点的所有 book 先辈以及如果当前节点是 book 的话也要选取
root.xpath('.//title')[0].xpath('ancestor-or-self::book')
root.xpath('.//book')[0].xpath('ancestor-or-self::book')
root.xpath('.//book')[0].xpath('ancestor::book')# child::*/child::price 选取当前节点的所有 price 孙节点,等价于 './*/price'
root.xpath('child::*/child::price')
root.xpath('./*/price')


这篇关于XPath与lxml_3XPath坐标轴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943565

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

css选择器和xpath选择器在线转换器

具体前往:Css Selector(选择器)转Xpath在线工具

Matplotlib通过axis()配置坐标轴数据详解

坐标轴范围设置 axis()可以直接传入列表[xmin,xmax,ymin,ymax]进行范围设置, 分别可以使用plt.axis()或者画布对象.axis()进行配置 import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 20, 100)y = x*2plt.plot(x, y, 'r')plt.ax

[Xpath] Xpath基础知识

1.Xpath(XML Path Language)介绍 Xpath用于在HTML文档中通过元素(HTML标签)和属性(HTML标签的属性)进行数据定位 Xpath的优势:灵活且稳定 HTML树状结构 HTML的结构是树形结构,HTML是根节点,所有的其他元素节点都是从根节点发出的,其他元素都是这棵树上的节点Node,每个节点还可能有属性和文本 所有的HTML标签都有很强的

爬虫二:获取豆瓣电影Top250(Requests+XPath+CSV)

描述: 在上一篇获取豆瓣图书Top250的基础上,获取豆瓣电影Top250的数据并将结果写入CSV文件中。 代码: # -*- coding: UTF-8 -*-import requestsfrom lxml import etreeimport timeimport csv# 从网页上获取电影数据moviedata = []count = 0for i in range(1

爬虫一:获取豆瓣图书Top250(Requests+XPath)

目的: 获取豆瓣图书Top250的所有书目信息。 豆瓣网址:https://book.douban.com/top250 代码: import requestsfrom lxml import etreeimport timefor i in range(10):url = 'https://book.douban.com/top250?start=' + str(25*i)data

HtmlCleaner无法通过XPath获取到数据

通过浏览器F12,选取的Xpath路径有时无法定位到目标即:objects为空,无法通过XPath获取到数据。 原因分析: 不同浏览器获取到的XPath不同XPath路径中有tbody标签Xpath路径有html,示例: Xpath: /html/body/div[2] 希望获取的数据是动态加载的 Xpath路径规则介绍: 语法 选取结点 表达式描述/从根节点选取//从匹配选择的当

爬虫工具:浅谈HtmlCleaner+XPath解析HTML

现在常用的网页解析工具有:Jsoup,JsoupXpath,HtmlCleaner。 jsoup 是一款Java 的XML、HTML解析器,可直接解析某个URL地址、HTML文本内容和已经存在的文件。 JsoupXPath是基于Jsoup的拓展,使用路径的形式解析XML和HTML文档。核心类为JXDocument;JsoupXPath的节点对象JXNode不仅可以获取标签节点,还可以获取属性节

windows install lxml for scrapy

在安装scrapy过程中可能遇到 ********************************************************************************* Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? *************

5.在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。

这种题目见过一些类似的题目。这里整理一下思路。 一位很牛逼的网友写的,点击打开链接。用的是分治法,类似于归并排序。 还有一种动态规划的方法,点击打开链接,思路如下: 假设S[n]表示n条线段中最长重叠距离,最长重叠距离只与两条线段有关,那么考虑两种情况: 1. 最长重叠距离与第n条线段无关,则最长重叠距离存在于前n-1条线段中,即S[n]=S[n-1]; 2. 最长重叠距离与第n条线段有