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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
python数据结构之二叉树的遍历实例
Apr 29 Python
微信跳一跳游戏python脚本
Apr 01 Python
Python Series从0开始索引的方法
Nov 06 Python
基于树莓派的语音对话机器人
Jun 17 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
python如何删除文件、目录
Jun 23 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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
Look And Say 序列php实现代码
2011/05/22 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
python梯度下降算法的实现
2020/02/24 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
python合并多个excel文件的示例
2020/09/23 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
新护士岗前培训制度
2014/02/02 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
扬尘污染防治方案
2014/06/15 职场文书
机械机修工岗位职责
2014/08/03 职场文书
查摆剖析材料范文
2014/09/30 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
创业计划书详解
2019/07/19 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript