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 相关文章推荐
python登录QQ邮箱发信的实现代码
Feb 10 Python
理解Python垃圾回收机制
Feb 12 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
基于python二叉树的构造和打印例子
Aug 09 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
redis数据库及与python交互用法简单示例
Nov 01 Python
python实现超市商品销售管理系统
Nov 22 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
python上下文管理器异常问题解决方法
Feb 07 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
?生?D片??C字串
2006/12/06 PHP
PHP集成FCK的函数代码
2008/09/27 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
python解析xml文件实例分享
2013/12/04 Python
python交互式图形编程实例(三)
2017/11/17 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python列表list操作相关知识小结
2020/01/29 Python
python2 对excel表格操作完整示例
2020/02/23 Python
Python 高效编程技巧分享
2020/09/10 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
考试退步检讨书
2014/01/15 职场文书
高考寄语大全
2014/04/08 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
担保书范本
2015/01/20 职场文书
golang的文件创建及读写操作
2022/04/14 Golang
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB