网上看了许多关于轴的介绍,只介绍了语法,而没有明说具体实际中该怎么使用,百思不得其解。

  • 背景——python中使用xpath:
 -------------------------------------------------
        content = '''     <a>
                                    <b>
                                            <c>
                                                 text here
                                            </c>
                                    </b>
                               </a>'''
         from lxml import etree
         #etree = __import__("lxml").etree
         tree1 = etree.HTML(content)
         tree2 = etree.XML(content)
------------------------------------------------
 
那么你将会得到:
tree1:
<Element html at 0x7fdfb43bfe18>
tree2:
<Element a at 0x7fdfb43bf908>
 
此时, tree1相当于将content套入了  <html><body>$content</body></html>之中 (此处采用了php的写法来理解)
而,tree2 这是原本的content。
 
  • 进入正题,轴的正确使用姿势
平时使用的一些语法,可以看作轴的简化版,如
tree1.xpath(" //a ")   用轴来表示是   tree1.xpath(" /descendant::a ")
tree1.xpath(" //a/b ")   用轴来表示是   tree1.xpath(" /descendant::a/child::b ")  特别的也可以这么写tree1.xpath("//a").xpath("./b")   其中 “.”表示当前结点
 
轴还有一些更强大的地方:
tree2.xpath(" /a/child::* ") #选取a的所有子元素结点,元素两个字很重要
tree2.xpath(" /a/self::* ") #选取自己
tree2.xpath(" /a/child::node() ") #选取a的所有子结点,包含任何类型的结点
 
  • 插曲:scrapy中的xpath 有个方法特别好用  extract(),能够将当前结点对象转换为字符串,包换所有子节点字符串的字符串。 依然在研究中,代码实现待更新,by lca,博客园ID:lc_D_a
 
附一个xpath轴的语法:http://www.w3school.com.cn/xpath/xpath_axes.asp,进行发挥你的想象使用轴吧!

xpath轴的正确使用姿势的更多相关文章

  1. python+selenium基础之XPATH轴定位(第二篇)

    第一篇讲了xpath定位的一些基本定位方法,这里再介绍一种:xpath轴定位,应用场景是当某个元素的各个属性及其组合都不足以定位时,那么可以利用其兄弟节点或者父节点等各种可以定位的元素进行定位. 1. ...

  2. 高版本jquery尤其是1.10.2的版本设置input radio设置值的最正确的姿势。

    $("input:radio[name="analyshowtype"]").attr("checked",false); $(" ...

  3. NSnotificationCenter 正确使用姿势, removeObject 探索

    最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...

  4. XPath 轴

    XML 实例文档 我们将在下面的例子中使用此 XML 文档: <?xml version="1.0" encoding="ISO-8859-1"?> ...

  5. 微信H5中静默登录及非静默登录的正确使用姿势

    在微信中打开网页且需要调用微信登录接口时,微信官方给我们提供了两种登录调用方式:静默登录和非静默登录:但是官方文档中却没有说明在何种情况下使用静默登录,何种情况下使用非静默登录,所以在这里,我想将之前 ...

  6. Java日志正确使用姿势

    前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了.但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名 ...

  7. MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集

    MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...

  8. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

  9. XPath轴(XPath Axes)总结

    XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: 1.child 选取当前节点的所有子元素 2.parent 选取当前节点的父节点 3.descendant 选取当前节点的所有后 ...

随机推荐

  1. CentOS集群安装Tmux

    对于Linux的常用者,如果你说你不会tmux,那你就out啦~ 1. 什么是Tmux? 先来看看Tmux长什么样. tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD ...

  2. Eclipse - 修改默认user和类的创建日期

    1.找到eclipse.ini文件 2.在文件中找到 -vmargs -Duser.name=xxxxxxxx 3.修改xxxxxxxx为你的名字 4.eclipse中:Window -> Pr ...

  3. centos6环境下安装tmux

    Install tmux on CentOS 6:1. sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-releas ...

  4. setProgressBarIndeterminateVisibility(true);

    此为在标题栏 上 设置一个loading 圈  实用...

  5. 初学者的python学习笔记1

    推荐一段时间闲的蛋疼,总觉得再堕落下去不太好,便捡起了之前一直想学而没有学的python,以此记录一下学习笔记,同时亦是督促和复习. 学习51cto上的<2016最新Python开发基础课程-2 ...

  6. a标签

    a链接是一种触发行为元素,行内元素 属性:href/target/class/id/title href: <a href="www.baidu.com"></a ...

  7. When you install printer in Ubuntu, just need a ppd file.

    Search printing in the system and add printer. Then import ppd file. That is all.

  8. python-phpbb3 (可以用python3 操作 phpbb3 论坛的模块)

    python-phpbb3 2016年8月30日 04:50:48 codegay phpbb3是PHP写的开源的论坛,python-phpbb3这个项目是用python3实现很多对phpbb3论坛操 ...

  9. Android计算器尝试

    学了一段时间Android了,一直都是在看,没有什么尝试,刚好最近大致学会了gridview配合simpleadpter的使用,于是想着动手练习一下,就选择了写一个最简单的计算器来实现. 只包含+-* ...

  10. C语言文法分析

    程序 → <外部声明>|<程序><外部声明> <外部声明> → <函数定义> | <声明> <函数定义> → < ...