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之简单主机批量管理工具
Jan 27 Python
tensorflow中next_batch的具体使用
Feb 02 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
详解Django的CSRF认证实现
Oct 09 Python
python生成n个元素的全组合方法
Nov 13 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
django解决跨域请求的问题详解
Jan 20 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
Python 批量读取文件中指定字符的实现
Mar 06 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
构建简单的Webmail系统
2006/10/09 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
如何使用php输出时间格式
2013/08/31 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
js的各种数据类型判断的介绍
2019/01/19 Javascript
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
幼儿园安全检查制度
2014/01/30 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
保安队长职务说明书
2014/02/23 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
简易离婚协议书范本
2014/10/24 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server