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 tempfile模块学习笔记(临时文件)
May 25 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 Python
简单的编程0基础下Python入门指引
Apr 01 Python
Python格式化输出%s和%d
May 07 Python
pymongo中聚合查询的使用方法
Mar 22 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
python爬虫可以爬什么
Jun 16 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
python读取xml文件方法解析
Aug 04 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
js实现页面转发功能示例代码
2013/08/05 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
python排序方法实例分析
2015/04/30 Python
Python smallseg分词用法实例分析
2015/05/28 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
家具商场的活动方案
2014/08/16 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
2015新学期家长寄语
2015/02/26 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
Java 多线程协作作业之信号同步
2022/05/11 Java/Android