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上下文管理器和with块详解
Sep 09 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
python语言基本语句用法总结
Jun 11 Python
对python中assert、isinstance的用法详解
Nov 27 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
Django后台管理系统的图文使用教学
Jan 20 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 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操作MySQL事务实例
2014/11/05 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
Vuejs实现购物车功能
2017/11/05 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
database面试题
2013/03/28 面试题
2014年两会学习心得体会
2014/03/17 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
九华山导游词
2015/02/03 职场文书
保外就医申请书范文
2015/08/06 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python