python xpath定位元素方法_Python爬虫杂记 - Xpath高级用法

xpath 高级用法

1. 匹配当前节点下的所有: .//

. 表示当前

// 表示当前标签下的所有标签

注: 要配合使用

2. 匹配某标签的属性值: /@属性名称

这里以input里的value值为例:

例:xpath(//input/@value)

3. 匹配多个路径:|

在一个xpath中写的多个表达式用 | 分开, 每个表达式互不干扰。

例:xpath("//tr[6]/td[2]/text() | //tr[7]/td[2]/text()")

4.按属性匹配:@

获取所有id="test"的所有文本内容

xpath('//*[@id="test"]//text()')

5. 匹配不包含某个属性的标签 not

多用于表格中匹配中不包含表头信息的数据

例:xpath('//table/tr[not(@class="tbhead")]')

6. 匹配包含多个属性的标签: and

匹配所有的tr中不包含 tbhead 属性 和包含 head 的tr标签

xpath('//table/tr[not(@class="tbhead") and @class="head"]')

7. 匹配包含不同属性的名称相同的标签: or

匹配包含class="speedbar" 或者 class="content-wrap" 的标签

例:xpath('//div[@class="speedbar" or @class="content-wrap"]')

8. 将对象还原为字符串:etree.tostring()

将匹配到的对象,作为etree.tostring()的参数即可, 注: 返回字符串

sObj = xml.xpath('//*[@id="test"]')[0] #使用xpath定位一个节点

sStr = etree.tostring(sObj)

9.按轴(Axes)匹配

9.1 选取当前节点的所有子元素: child

获取div下的tr的标签

例:xpath('//div[@id="testid"]/child::tr/td/text()') # 感觉这种方法鸡肋, //div[@id="testid"]//tr/td 也可以实现

9.2 选取当前节点的所有属性:attribute

获取div标签所有的属性值

例: xpath('//div/attribute::*') # 感觉这种方法鸡肋,//div/@* 同样能实现

9.3 ancestor:父辈元素 / ancestor-or-self:父辈元素及当前元素

获取父辈元素的div的所有属性值, 在不好定位的情况下,通过孩子标签定位,这种方法可以用

xpath('//div[@id="test"]/ancestor::div/@*')

xpath('//div[@id="test"]/ancestor-or-self::div/@*')

9.4 descendant:后代 / descendant-or-self:后代及当前节点本身

获取孩子元素的div的所有属性值,感觉鸡肋

xpath('//div[@id="test"]/descendant::div/@*')

xpath('//div[@id="test"]/descendant-or-self::div/@*')

9.5 选取当前节点的所有命名空间节点:namespace

xpath('//div[@id="test"]/namespace::*')

9.6 定位:position

和通过下标定位一样, 方法鸡肋

xpath('//*[@id="test"]/ol/li[position()=2]/text()')

10.Xpath 函数:

10.1统计数量:count

统计符合要求节点的数量, 注: 返回字符串

xpath('count(//tr[@info])')

10.2字符串拼接 :concat

统计出来的两个内容的字符串进行“ + ”处理, 注: 返回字符串

xpath('concat(//li[@id="one"]/text(),//li[@id="three"]/text())')

10.3 解析当前节点下的字符:string

string()直解析匹配的第一个标签的值, 注: 返回字符串

xpath('string(//tr)')

10.4 获取当前节点的节点名称: local-name

返回当前属性的节点名称, 注: 返回字符串

xpath('local-name(//*[@id="test"])')

10.5 以指定的字符开头:starts-with

starts-with定位属性值以8开头的li元素

xpath('//tr[starts-with(@code,"one")]/text()')

10.6 小于:<

匹配所有tr标签属性info小于200的内容

xpath('//tr[@info<200]/text()')

11. 根据指定的文本内容选择

# 指定的文本内容可以是文本内容的部分, 也可以是全部

//div[2]/ul/li[contains(text(), "指定的文本内容")]/span/text()

注: 以上内容, 除标注外, 均返回列表!!

`总注: 在平常的xpath的使用中, 前8项的内容已基本够用, 使用时也应该使用简洁、易读、高效的匹配式。其余两项定位在较难的地方备选使用。切不可以为了追求高逼格, 刻意使用难懂难写低效的匹配式。人生苦短…“

本人水平有限, 如有错误欢迎提出指正!如有参考, 请注明出处!!禁止抄袭,遇抄必肛!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反向Z(Reversed-Z)的深度缓冲原理

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/75517534 https://zjinc36.github.io/2020/03/10/2020-20200309-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E6%B5%AE%E7%82%B9%E6%95%B0%E4%B8%8E%E6%B5%AE%E7%82%B9%E6%95%B0%E7%9A%84%E7%B2%BE%E5%BA%A6%E9%97%AE%E9%A2%98/ …

screenocr怎么卸载_screenocr是什么软件 screenocr软件及其功能介绍

在日常的生活和工作当中不免会遇到一些无法进行复制但是又想要去将它摘录下来的文字。用手去进行输入的话及麻烦又费力&#xff0c;这个时候我们可以使用OCR技术来讲它们识别出来。而screenocr就是这样子的一款软件&#xff0c;还不是很了解screenocr都有哪些功能如何使用的用户…

saspython知乎_SAS入门书籍有哪些值得推荐?

2020年 8月更新&#xff1a;我觉得&#xff0c;我应该推荐下我本人出版的《SAS编程演义》《SAS编程演义》(谷鸿秋)【摘要 书评 试读】- 京东图书​item.jd.com ------------------------------------------------------------ 我觉得这个问题我还是可以唠叨几句的&#xff0c;我…

access exex控制pc_ownCloud/Nextcloud文件访问控制(Files Access Control)

事实上这是一个插件(APP)&#xff0c;也是ownCloud/Nextcloud的一项重要功能&#xff1a;文件访问控制。文件访问控制APP可以提供丰富强大的访问管理功能&#xff0c;从单文件权限到组文件&#xff0c;再到IP地址屏蔽&#xff0c;可以引用访问的时间、文件类型、用户、组等因素…

渲染杂谈:early-z、z-culling、hi-z、z-perpass到底是什么?

渲染杂谈&#xff1a;early-z、z-culling、hi-z、z-perpass到底是什么&#xff1f; 之前一直被这几个和深度缓存&#xff08;z-buffer&#xff09;相关的概念搞得神魂颠倒。今天在翻阅《Real-Time Rendering》时碰巧碰巧看到了这部分的讲解。硬着头皮看了看&#xff0c;姑且算…

output怎么用_性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库

允中 发自 凹非寺量子位 编辑 | 公众号 QbitAI假如问在深度学习实践中&#xff0c;最难的部分是什么&#xff1f;猜测80%的开发者都会说&#xff1a;“当然是调参啊。”为什么难呢&#xff1f;因为调参就像厨师根据食材找到了料理配方&#xff0c;药剂师根据药材找到了药方&…

GPU架构杂乱备忘——IMR、TBR、TBDR

原文&#xff1a;https://juejin.cn/post/6844904132864655367 GPU架构杂乱备忘——IMR、TBR、TBDR 之前觉得涉及到gpu架构相关的问题只需要知道个大概就好&#xff0c;毕竟在图形api的层面上应该把硬件的细节给隐蔽掉&#xff0c;gpu的架构千千万万&#xff0c;每家厂商每个…

如何用python制作九九乘法表_Python一行代码给儿子制作九九乘法表

一行代码实现九九乘法表 print(\n.join( .join([%sX%s%s%(j,i,i*j) for j in range(1,i1)]) for i in range(1,10))) 1X11 1X22 2X24 1X33 2X36 3X39 1X44 2X48 3X412 4X416 1X55 2X510 3X515 4X520 5X525 1X66 2X612 3X618 4X624 5X630 6X636 1X77 2X714 3X721 4X728 5X735 6X…

帧同步相关文章

https://zentia.github.io/2019/04/22/frame-sync/ http://www.skywind.me/blog/archives/131 https://blog.codingnow.com/2018/08/lockstep.html

动词变名词的变化规则_动词过去式变化规则 - 点评英语网

动词考查是英语学习的重点和难点&#xff0c;动词过去式和过去分词的变化是学生学习的“拦路虎“之一。为了避免枯燥的去记忆&#xff0c;我们可以用一些轻松有趣的口诀去记住动词过去式的变化形式。动词过去式的变化口诀过去式很简单&#xff0c;只要你能这样记。前提必须是动…

requests下载大文件_11种方法教你用Python高效下载资源!

在本教程中&#xff0c;你将学习如何使用不同的Python模块从web下载文件。此外&#xff0c;你将下载常规文件、web页面、Amazon S3和其他资源。最后&#xff0c;你将学习如何克服可能遇到的各种挑战&#xff0c;例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他…

android自定义push通知_20个海外Web和App推送通知服务工具

在App和网站中使用推送通知有不同的原因&#xff0c;并且在提高流量和与客户互动方面有很多好处。推送通知是一种交互式可点击消息&#xff0c;可将访问者直接引导至你的网站。它们可以帮助你以指数方式增加流量和参与率。因此&#xff0c;营销人员&#xff0c;广告商&#xff…

linux 删除文件_Linux删除文件夹命令有哪些

今天要和大家分享的Linux常用命令是Linux删除文件夹命令,Linux删除文件夹很简单,常用的命令有rmdir和rm,以下分别介绍一下,大家根据情况选择使用即可。 Linux删除文件夹命令有哪些 ①Linux删除文件夹命令:rmdir rmdir命令使用场景: 当有空目录要删除时,可使用rmdir指令。…

url上接收到 el表达式 不渲染_一文摸透从输入URL到页面渲染的过程

一文摸透从输入URL到页面渲染的过程从输入URL到页面渲染需要Chrome浏览器的多个进程配合&#xff0c;所以我们先来谈谈现阶段Chrome浏览器的多进程架构。一、Chrome架构目前Chrome采用的是多进程的架构模式&#xff0c;可分为主要的五类进程&#xff0c;分别是&#xff1a;浏览…

模拟弱网工具的使用

https://zhuanlan.zhihu.com/p/98185153 https://www.jianshu.com/p/5e35a3585df5 今年5G技术开始铺开并进入商用。随着5G的到来&#xff0c;不知道大家有没有和我一样的感受&#xff0c;希望是我心理作用吧&#xff0c;我发现作为一个4G用户&#xff0c;最近我的手机网速是不…

c语言计算a+aa+aaa_物业服务企业信用等级公布,42家获AAA级!你家小区物业怎么样?...

杭州住保房管 根据《浙江省物业服务企业信用信息管理办法》和《浙江省行业信用监管责任体系构建工作方案》&#xff0c;日前&#xff0c;省建设厅公布了 2020年度浙江省物业服务企业信用等级结果名单&#xff0c;杭州165家物业服务企业上榜&#xff0c;绿城物业服务集团有限公司…

python 可视化_python可视化基础

常用的python可视化工具包是matplotlib&#xff0c;seaborn是在matplotlib基础上做的进一步封装。入坑python可视化&#xff0c;对有些人来说如同望山跑死马&#xff0c;心气上早输了一节。其实学习一门新知识&#xff0c;首先要掌握的是这门知识的最少最核心知识&#xff0c;剩…

ios did receive memory warning

今天测试IOS包体时&#xff0c;在一个很老的Ipad上闪退&#xff0c;查log显示是did receive memory warning。 Google了一圈&#xff0c;原因是2013年之前的ipad&#xff0c;用的A7处理器&#xff0c;不支持Unity的ASTC的Texture格式&#xff0c;因此游戏启动后&#xff0c;内…

使用post访问不到接口_Postman工具使用说明

一、工具说明接口测试工具&#xff0c;支持post&#xff0c;get&#xff0c;请求的接口测试&#xff1b;支持参数中带token&#xff0c;带cookie等接口测试。印度阿三开发的产品&#xff0c;稳定性较好&#xff0c;强烈推荐&#xff0c;屡试很爽。适用&#xff1a;前后端分离的…

java正则表达式判断手机号_正则表达式学习之简单手机号和邮箱练习

正则表达式的组成规则在java中&#xff0c;正则表达式的编译是类java.util.regex.Pattern正则表达式的构造摘要1.字符x包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号的普通字符。比如之前的例子可以将[1-9][0-9]{4,12}改成1[0-9]{4,12}或者a[0-9]{4,12}此时就…