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 参数列表中的self 显式不等于冗余
Dec 01 Python
python在windows下实现备份程序实例
Jul 04 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
学生信息管理系统python版
Oct 17 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
python快速排序的实现及运行时间比较
Nov 22 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
如何将json数据转换为python数据
Sep 04 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代码
2012/07/14 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Python如何实现邮件功能
2020/05/27 Python
如何表示python中的相对路径
2020/07/08 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
Linux文件操作命令都有哪些
2015/02/27 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
信息管理员岗位职责
2013/12/01 职场文书
酒店副总岗位职责
2013/12/24 职场文书
食品安全检查制度
2014/02/03 职场文书
承诺书怎么写
2014/03/26 职场文书
安全生产承诺书范文
2014/05/22 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
政审证明范文
2015/06/19 职场文书