Python xpath使用语法规则是什么,有哪些知识点
Admin 2022-09-07 群英技术资讯 1304 次浏览
今天小编跟大家讲解下有关“Python xpath使用语法规则是什么,有哪些知识点”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学习网络爬虫,对这些基础重要知识不太了解,所以写一下来加深印象,本篇文章只是简单介绍一下Xpath及使用,总体来说比较基础。
XPath(XML Path Language - XML路径语言),它是一种用来确定XML文档中某部分位置的语言。
Xpath以XML为基础,提供用户在数据结构树中寻找节点的能力,Xpath被很多开发者亲切的称为小型查询语言。
xpath可以使用路径表达式在XML上选取节点,从而达到确认元素的目的,我们先来介绍以下语法规则。
| 表达式 | 作用 |
|---|---|
| nodename | 选取此层级节点下的所有子节点 |
| / | 代表从根节点进行选取 |
| // | 可以理解为匹配,就是在所有节点中选取此节点,直到匹配为止 |
| . | 选取当前节点 |
| … | 选取当前节点上一层(上一级内容介绍) |
| @ | 选取属性(也是匹配) |
| 方式 | 效果 |
|---|---|
| /html/body/div | 表示从根节点开始寻找,标签与标签之间/表示一个层级 |
| /html//div | 表示多个层级 作用于两个标签之间(也可以理解为在html下进行匹配寻找标签div) |
| //div | 从任意节点开始寻找,也就是查找所有的div标签 |
| ./div | 表示从当前的标签开始寻找div |
| 需求 | 格式 |
|---|---|
| 定位div中属性名为href,属性值为‘www.baidu.com’的div标签 | @属性名=属性值 |
| href为属性名 'www.baidu.com’为属性值 | /html/body/div[href=‘www.baidu.com’] |
| 需求 | 格式 |
|---|---|
| 定位ul下第二个li标签(下图) | //ul/li[2] |
| 索引值开始位置为 | 1 |
| 方法 | 效果 |
|---|---|
| /text() | 获取标签下直系的标签内容 |
| //text() | 获取标签中所有的文本内容 |
| string() | 获取标签中所有的文本内容 |
在网页上获取Xpath其实很容易,直接找到标签后,右键复制就好了。

接下来我们开始练习一下本地导入,加深一下理解,这个是一个比较简单的网页结构,我们先学会用法即可。

任务要求: 可以达到随心所欲的定位每一个元素
准备工作
#导入所需要的包
from lxml import etree
#采用本地源码获取方式并加载到etree内
tree = etree.parse('test.html')
1.获取百度、谷歌、搜狗文本内容
#引用xpath方法并进行标签定位
#''.join是取字符串内的内容
text = ' '.join(tree.xpath('/html/body/ul/li/a/text()'))
print(text)

2.获取单个谷歌
text1 = tree.xpath("//ul/li[2]/a/text()")[0]
print(text1)

3.获取北京、上海、天津的属性值
text2 = ' '.join(tree.xpath("//ol/li/a/@href"))
print(text2)

4.获取河南文本
#获取河南文本
text3 = tree.xpath("/html/body/div[2]/text()")[0]
print(text3)

5.获取谷歌属性值
text4 = tree.xpath("//ul/li[2]/a/@href")[0]
print(text4)

至此我们已经可以随心定位任意标签 完成任务 收工
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了Keras实现Vision Transformer VIT模型示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
大家好,本篇文章主要讲的是python二分法查找函数底值,感兴趣的同学赶快来看一看吧,对你有用的话记得收藏一下,方便下次浏览
文本主要给大家介绍python 调用js的方法,包括PyExecJS、js2py、Node.js、PyV8这四种方式,本文有具体示例供大家参考学习,感兴趣朋友可以看看。
同事最近有个需求,需要批量修改文件的名称,这篇文章主要给大家介绍了关于python批量修改文件名的三种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
py_compile模块提供一个函数,用于从源文件生成字节码文件,以及在将模块源文件作为脚本调用时使用的另一个函数。虽然并不经常需要,但是在安装用于共享使用的模块时,这个函数非常有用,特别是如果某些用户可能没有权限在包含源代码的目录中编写字节码缓存文件的话。源代码不多,如下>>>importpy_compile>>>dir(py_c
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008