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使用random和tertools模块解一些经典概率问题
Jan 28 Python
用Python进行基础的函数式编程的教程
Mar 31 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python+django+rest框架配置创建方法
Aug 31 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
Pytorch 中的optimizer使用说明
Mar 03 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 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
农民C键的运用技巧
2020/03/04 星际争霸
php 日期时间处理函数小结
2009/12/18 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
AngularJS入门教程之模块化操作用法示例
2016/11/02 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python BS4库的安装与使用详解
2018/08/08 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
英语专业求职信
2014/07/08 职场文书
求职信的正确写法
2014/07/10 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书