Python : Xpath简介及实例讲解

news/2024/7/5 20:29:58 标签: python, 网络爬虫

文章目录

  • 一、Xpath简介
  • 二、Xpath语法规则
    • 语法规则
    • 标签定位
    • 属性定位
    • 索引定位
    • 取文本内容
  • 三、语法规则练习

前言

CSDN上已经有很多大佬发过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">#导入所需要的包
from lxml import etree
#采用本地源码获取方式并加载到etree内
tree = etree.parse('test.html')

1.获取百度、谷歌、搜狗文本内容

python">#引用xpath方法并进行标签定位
#''.join是取字符串内的内容
text = ' '.join(tree.xpath('/html/body/ul/li/a/text()'))
print(text)

在这里插入图片描述
2.获取单个谷歌

python">text1 = tree.xpath("//ul/li[2]/a/text()")[0]
print(text1)

在这里插入图片描述
3.获取北京、上海、天津的属性值

python">text2 = ' '.join(tree.xpath("//ol/li/a/@href"))
print(text2)

在这里插入图片描述
4.获取河南文本

python">#获取河南文本
text3 = tree.xpath("/html/body/div[2]/text()")[0]
print(text3)

在这里插入图片描述
5.获取谷歌属性值

python">text4 = tree.xpath("//ul/li[2]/a/@href")[0]
print(text4)

在这里插入图片描述

至此我们已经可以随心定位任意标签 完成任务 收工


http://www.niftyadmin.cn/n/1799425.html

相关文章

position 属性规定元素的定位类型

position 属性规定元素的定位类型CSS position 属性 CSS 参考手册 定义和用法 position 属性规定元素的定位类型。 说明 这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。…

POJ-1386 Play on Words 有向图欧拉通路判定

题意:给定一系列的单词,这些单词要使用类似与成语接龙的方式将他们连接起来,现在问是否存在这样一个通路。 解法:为什么这种题目刚看起来总是像那个什么哈密顿回路呢?欧拉回路主要解决对边的遍历问题,因此我…

Super_VLAN/Vlan aggregation运行原理及实例详细配置

文章目录一、Super vlan简介二、Super VLAN运行原理三、Super VLAN详细配置讲解(重点!)前言 我相信大家查看此篇文章都是奔着配置来的,我这里简要帮助大家回顾一下Super vlan的相关知识点,最后详细对配置进行讲解。 一、Super vla…

【VLAN高级技术】--- MUX VLAN运行原理及实例配置讲解

文章目录一、MUX VLAN产生原因二、MUX VLAN运行原理三、实例配置讲解(重点!!!)四、MUX VLAN配置命令一、MUX VLAN产生原因 个人认为MUX VLAN主要是为大中型网络进行设计的,一般在大中型企业内有很多职责不…

【以太网交换安全】--- MAC地址表安全基本概念讲解及配置命令

文章目录前言一、MAC地址表安全二、MAC地址表类型及作用三、MAC表项相关命令(来自华为官方)1.配置静态MAC表项2.配置黑洞MAC表项3.配置动态MAC表项的老化时间4.关闭基于VLAN的MAC地址学习功能5.配置基于接口限制MAC地址学习数6.配置当MAC地址数达到限制后,对报文应采…

【VLAN高级技术】--- QinQ运行原理及实例配置讲解

文章目录一、QinQ概述二、QinQ运行原理三、QinQ类型四、QinQ实例配置讲解(重点!)五、QinQ配置命令(灵活QinQ)一、QinQ概述 现在以太网技术在网络中进行了大量的部署,网络中有着各种各样的需求,如果我们利用产传统的VL…

如何:在執行 SQL 工作中將結果集對應至變數

SQL Server 2005 在 Business Intelligence Development Studio 中,開啟包含所需封裝的 Integration Services 專案。 在 [方案總管] 中,連按兩下封裝將其開啟。 按一下 [控制流程] 索引標籤。 如果封裝尚未包含執行 SQL 工作,則會加入一個…

【以太网交换安全】--- 端口隔离运行原理及二层隔离三层通信实例配置讲解

文章目录一、端口隔离技术概述二、端口隔离技术运行原理三、端口隔离实例配置配置四、效果检测五、端口配置命令一、端口隔离技术概述 一般在以太网交换网络中为了隔绝广播域通常使用不同的vlan进行报文之间的二层隔离,但是网络随着网络规模不断扩大,业…