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从函数参数类型引出元组实例分析
May 28 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
python构建指数平滑预测模型示例
Nov 21 Python
python 实现线程之间的通信示例
Feb 14 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
Python实现SMTP邮件发送
Jun 16 Python
Python多线程的退出控制实现
Aug 10 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
解决numpy和torch数据类型转化的问题
May 23 Python
Python3.10的一些新特性原理分析
Sep 15 Python
Python中递归以及递归遍历目录详解
Oct 24 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语法速查表
2006/12/06 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
php提高网站效率的技巧
2015/09/29 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
菜单效果
2006/10/14 Javascript
javascript this用法小结
2008/12/19 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
js实现扫雷源代码
2020/11/27 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
员工教育培训协议书
2014/09/27 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书