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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python将图片转换为字符画的方法
Jun 16 Python
解决python3 json数据包含中文的读写问题
May 10 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 30 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面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
python实现的重启关机程序实例
2014/08/21 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
实例详解Python模块decimal
2019/06/26 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
竞聘上岗演讲
2014/05/19 职场文书
授权收款委托书
2014/09/23 职场文书
2014年除四害工作总结
2014/12/06 职场文书
单身申明具结书
2015/02/26 职场文书
英语演讲开场白
2015/05/29 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
初中政治教学反思
2016/02/23 职场文书