Python爬虫 简单介绍一下Xpath及使用


Posted in Python onApril 26, 2022

前言

网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学习网络爬虫,对这些基础重要知识不太了解,所以写一下来加深印象,本篇文章只是简单介绍一下Xpath及使用,总体来说比较基础。

一、Xpath简介

XPath(XML Path Language - XML路径语言),它是一种用来确定XML文档中某部分位置的语言。

Xpath以XML为基础,提供用户在数据结构树中寻找节点的能力,Xpath被很多开发者亲切的称为小型查询语言。

二、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其实很容易,直接找到标签后,右键复制就好了。

Python爬虫 简单介绍一下Xpath及使用

三、语法规则练习

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

Python爬虫 简单介绍一下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)

Python爬虫 简单介绍一下Xpath及使用

2.获取单个谷歌

text1 = tree.xpath("//ul/li[2]/a/text()")[0]
print(text1)

Python爬虫 简单介绍一下Xpath及使用

3.获取北京、上海、天津的属性值

text2 = ' '.join(tree.xpath("//ol/li/a/@href"))
print(text2)

Python爬虫 简单介绍一下Xpath及使用

4.获取河南文本

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

Python爬虫 简单介绍一下Xpath及使用

5.获取谷歌属性值

text4 = tree.xpath("//ul/li[2]/a/@href")[0]
print(text4)

Python爬虫 简单介绍一下Xpath及使用

至此我们已经可以随心定位任意标签 完成任务 收工

总结

到此这篇关于Python爬虫必备之Xpath简介及实例的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Python中bisect的使用方法
Dec 31 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
分享python函数常见关键字
Apr 26 #Python
python和Appium的移动端多设备自动化测试框架
Apr 26 #Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 #Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
python使用BeautifulSoup 解析HTML
Apr 24 #Python
Python中npy和mat文件的保存与读取
Apr 24 #Python
You might like
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
numpy.array 操作使用简单总结
2019/11/08 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
毕业生自荐信格式
2014/03/07 职场文书
软件测试专业推荐信
2014/09/18 职场文书
考研导师推荐信范文
2015/03/27 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
python中pandas对多列进行分组统计的实现
2021/06/18 Python
python简单验证码识别的实现过程
2021/06/20 Python
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript