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分割TXT文件成4K的TXT文件
May 23 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
Python3实现Web网页图片下载
Jan 28 Python
Python解惑之整数比较详解
Apr 24 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
python简单验证码识别的实现方法
May 10 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
python多任务之协程的使用详解
Aug 26 Python
python 发送json数据操作实例分析
Oct 15 Python
查看端口并杀进程python脚本代码
Dec 17 Python
Python获取、格式化当前时间日期的方法
Feb 10 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python中的列表与元组的使用
2019/08/08 Python
安装python及pycharm的教程图解
2019/10/10 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
学前教育专业毕业生自荐信
2013/10/03 职场文书
诚信考试承诺书
2014/03/27 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
借钱欠条怎么写
2015/07/03 职场文书
python 实现定时任务的四种方式
2021/04/01 Python