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 相关文章推荐
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python动态加载模块的3种方法
Nov 22 Python
Python re模块介绍
Nov 30 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
Python Web版语音合成实例详解
Jul 16 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 Python
Python 日期与时间转换的方法
Aug 01 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 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
学习php笔记 字符串处理
2010/10/19 PHP
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python对json的相关操作实例详解
2017/01/04 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
中科软测试工程师面试题
2012/06/16 面试题
中专生求职自荐信范文
2013/12/22 职场文书
三人合伙协议书范本
2014/10/29 职场文书
郭明义电影观后感
2015/06/08 职场文书
关于观后感的作文
2015/06/18 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers