Python解析网页-XPath
目录
1、什么是XPath
2、安装配置
3、XPath常用规则
4、快速入门
5、浏览器XPath工具
1.什么是XPath
XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言。
它是W3C(World Wide Web Consortium)定义的一种标准查询语言,广泛用于解析和操作XML文档。
2.安装配置
安装lxml:
pip install lxml
使用lxml:
from lxml import etree
3.XPath常用规则
XPath使用路径表达式来描述节点的位置和关系。以下是XPath的一些常用规则:
| 语法 | 说明 |
|---|---|
| nodeName | 选取此节点的所有子节点 |
| / | 从当前节点选择直接子节点 |
| // | 从当前节点选择子孙节点 |
| . | 当前节点 |
| .. | 选取当前节点的父节点 |
| @ | 获取属性 |
高级用法说明:
-
选择特定节点类型:
-
node():匹配任何节点。 -
text():匹配文本节点。 -
element:匹配元素节点。 -
@attribute:匹配属性节点。
-
-
属性选择:
-
[@属性名]:匹配具有特定属性的节点。 -
[@属性名=值]:匹配属性值等于给定值的节点。
-
-
位置选择:
-
[位置]:选择在指定位置的节点。 -
[last()]:选择最后一个节点。 -
[position()<n]:选择前 n 个位置的节点。
-
案例说明:

4.快速入门
在当前项目下创建一个index.html,如下:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><div class="aa">hello world</div><div class="bb">hello python</div></body>
</html>
完整代码示例如下:
p = pathlib.Path("index.html")
# 网页初始化
html = etree.HTML(p.read_text(encoding="utf-8")) # type: lxml.etree._Element
# 打印类型
# print(type(html))
# 获取指定节点
# print(html.xpath("body"))
# 获取当前节点
# print(html.xpath("."))
# 获取当前节点下的直接子节点
# print(html.xpath("./body"))
# 获取当前节点下的子孙节点
# print(html.xpath("//div"))
# 获取当前节点的父节点
# div = html.xpath("./body/div")[0] #type: lxml.etree._Element
# print(div.xpath(".."))
# 根据属性获取
# print(html.xpath("//div[@class='aa']"))
# 获取属性的值
# print(html.xpath("//div/@class"))
# 注意:元素顺序下标从1开始
# print(html.xpath("//div[1]/@class"))
# 获取文本信息
# print(html.xpath("//div[1]/text()"))
# print(html.xpath("//div[1]")[0].text)
5.浏览器XPath工具
打开Chrome浏览器,按F12打开开发者工具,找到console输入XPath语法指令查找网页内容。
参考地址:乐百川 - 简书
示例要求:通过浏览器的XPath工具搜索上述网页中的文章标题信息。
-
方式一:直接通过@class获取
$x("//div[@class='content ']/a/text()")

-
方式二:通过contains函数方式匹配@class属性的值
$x("//div[contains(@class,'content')]/a/text()")

相关文章:
Python解析网页-XPath
目录 1、什么是XPath 2、安装配置 3、XPath常用规则 4、快速入门 5、浏览器XPath工具 1.什么是XPath XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言。 它是W3C(World Wide Web Consortium)定义的一种标…...
Vue 3入门指南
title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置 第1章:Vue 3简介 1.1 Vue.js的历史与发展 Vue.js由前谷歌工程师尤雨溪(Eva…...
Arcpy安装和环境配置
一、前言 ArcPy 是一个以成功的arcgisscripting 模块为基础并继承了arcgisscripting 功能进而构建而成的站点包。目的是为以实用高效的方式通过 Python 执行地理数据分析、数据转换、数据管理和地图自动化创建基础。该包提供了丰富纯正的 Python 体验,具有代码自动…...
Swagger2 和 Swagger3 的不同
Swagger2 和 Swagger3 的不同 SpringBoot 整合 Swagger3 和 Swagger2 的主要区别如下: 区别一:引入不同的依赖 如果使用的是 Swagger 3 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…...
基于Tensorflow+Keras的卷积神经网络(CNN)人脸识别
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别是计算机视觉领域的一个重要研究方向,广泛应用于安全监控、身份验证、人机…...
electron学习记录
1.下载electron electron/electron-quick-start: Clone to try a simple Electron app (github.com) 下载实例模板 2.安装依赖 npm源改成中国镜像 npm config set registry https://registry.npmmirror.com 然后用cnpm i 来安装 npm换官方源 npm config set registry https:…...
【若依框架】学习
验证码 登录...
JavaScript运算符的二义性
在JavaScript中,运算符的二义性(或称为运算符重载)通常不是直接支持的特性,与某些其他语言(如C或Python)不同,这些语言允许开发者为自定义类型定义运算符的行为。然而,JavaScript的某…...
一次搞懂常见Banner尺寸,像素标准全解析!
在现代数字营销中,横幅banner广告是一种常见的形式,也是许多网站、博客和在线广告平台上常见的广告类型。然而,正确的横幅banner尺寸是至关重要的,因为它可以影响广告的可见性和效果。在本文中,我们将探讨横幅banner尺…...
短视频矩阵管理系统:高效运营的智能解决方案
在数字化时代,短视频已成为内容传播和品牌推广的重要渠道。随着短视频平台的不断涌现,如何高效管理和运营多个账号,成为了许多企业和个人面临的问题。短视频矩阵管理系统应运而生,它通过一系列智能化功能,为短视频的创…...
ubuntu执行apt-get upgrade时卡住,无法获得锁 /var/lib/dpkg/lock-frontend,无法获取 dpkg 前端锁
执行apt-get upgrade或apt-get dist-upgrade卡住,无法完成更新,中断后再执行更新命令出现如下提示 E: 无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 xxxx(unattended-upgr)持有。 N: 请注意,直接移除锁文件不一…...
和程序员de 相处之道
1、不要"一遇到问题就去找程序员" 通常,技术问题通过阅读使用说明就可以解决。比如你刚买了一个新的播放器,想要把它连接到你的电视,你只需要找到使用手册里关于如何连接接口的那一页即可。 错误信息通常会被很清晰地列出来。通过…...
图解Java数组的内存分布
我们知道,访问数组元素要通过数组索引,如: arr[0]如果直接访问数组,比如: int[] arr1 {1}; System.out.println(arr1);会发生什么呢? 打印的是一串奇怪的字符串:[I16b98e56。 这个字符串是J…...
前端项目使用docker编译发版和gitlab-cicd发版方式
项目目录 app/ ├── container/ │ ├── init.sh │ ├── nginx.conf.template ├── src/ ├── .gitlab-ci.yml └── deploy.sh └── Dockerfile └── Makefilecontainer目录是放nginx的配置文件,给nginx镜像使用 .gitlab-ci.yml和Makefile是c…...
18kw 机架式液冷负载的使用方法有哪些?
机架式液冷负载是一种高效、节能的散热设备,广泛应用于数据中心、服务器房等场所。它通过将冷却液循环流动,将热量从负载设备带走,实现设备的稳定运行。以下是18kw机架式液冷负载的使用方法: 1. 安装前准备:在安装机架…...
Linux liloconfig命令教程:创建和配置LILO引导加载器(附实例详解和注意事项)
Linux liloconfig命令介绍 liloconfig(Linux Loader Configuration)是一个用于创建新的lilo.conf文件的简单程序。在创建新的配置文件后,你必须执行/sbin/lilo。liloconfig使用lilo.example.conf文件作为模板。 Linux liloconfig命令适用的…...
大厂程序员离职,开发一个盲盒小程序2万,一周开发完!
大家好,我是程序员小孟! 前面接了一个盲盒的小程序,主要的还是商城,盲盒的话只是其中的有一个活动。 现在的年轻人是真的会玩,越来越新的东西出来,越来越好玩的东西流行。 就像最近很火的地摊盲盒。 讲…...
自定义 Spring AOP 切面实战(鉴权、记录日志)
前言: 从事 Java 的小伙伴都知道 Spring AOP,也都知道 AOP 是面向切面编程,那你知道 AOP 在项目实战中怎么使用吗?本篇简单分享 Spring AOP 在项目中的实际使用。 AOP 知识储备传送门: 深入理解 Spring AOP 源码分析…...
JAVA面试题大全(九)
1、为什么要使用 spring? 方便解耦,便于开发支持aop编程声明式事务的支持方便程序的测试方便集成各种优秀的框架降低JavaEE API的使用难度 2、解释一下什么是 aop? AOP 是 Aspect-Oriented Programming 的缩写,中文翻译为“面向…...
React 组件三大核心之 ref
文章目录 用法React.createRef()useRef Hook 注意 ref 是 React 中的一个重要概念,它用于访问和操作 DOM 元素或者类组件实例。 在React中,ref 提供了一种方式,允许我们访问DOM节点或在render方法中创建的React元素。这对于执行DOM操作、读取…...
从VASP的POSCAR到精美插图:一条ASE可视化流水线搭建指南
从VASP的POSCAR到精美插图:一条ASE可视化流水线搭建指南 在计算材料学研究中,我们常常需要处理大量的结构文件,尤其是VASP计算产生的POSCAR文件。这些文件包含了材料的原子坐标和晶格信息,但直接阅读文本文件很难直观理解材料的几…...
Fish-Speech-1.5语音合成参数详解:从基础到高级
Fish-Speech-1.5语音合成参数详解:从基础到高级 语音合成技术已经发展到了一个令人惊叹的水平,而Fish-Speech-1.5作为当前领先的文本转语音模型,提供了丰富的参数调节选项,让用户能够精准控制合成语音的风格和效果。无论你是刚接…...
极简办公:OpenClaw+Qwen3.5-9B自动回复日常邮件模板
极简办公:OpenClawQwen3.5-9B自动回复日常邮件模板 1. 为什么需要邮件自动化助手 每天早晨打开邮箱,总能看到十几封格式雷同的咨询邮件——产品报价、技术支持、会议邀约……这些邮件80%的内容都可以用标准模板回复,但手动复制粘贴依然要耗…...
SaaS Boilerplate支付集成终极方案:Stripe订阅管理与计费系统完整指南
SaaS Boilerplate支付集成终极方案:Stripe订阅管理与计费系统完整指南 【免费下载链接】saas-boilerplate SaaS Boilerplate - Open Source and free SaaS stack that lets you build SaaS products faster in React, Django and AWS. Focus on essential business …...
运放稳定性补偿实战:从Riso到双反馈,如何为你的MOSFET驱动电路‘降噪’
运放稳定性补偿实战:从Riso到双反馈的MOSFET驱动电路降噪方案 在高速开关电源和电机驱动系统中,工程师们经常需要面对一个令人头疼的问题——当MOSFET栅极电容与PCB寄生参数形成复杂网络时,电路会出现难以消除的振铃和过冲。这种现象不仅影响…...
避坑指南:数据埋点文档常见的5个致命错误(含神策/Sensors Data对比)
数据埋点文档避坑实战:从字段定义到工具选型的全流程指南 数据埋点文档的质量直接决定了后续分析的准确性和效率。在实际项目中,我们经常遇到因为埋点文档不规范导致的统计口径混乱、数据无法复用等问题。本文将结合主流工具特性,拆解埋点文档…...
避开网络限制:用Docker在本地或内网服务器部署Gemini Pro Chat的完整指南
企业级内网部署Gemini Pro Chat的Docker实践指南 当技术团队需要在封闭网络环境中部署AI服务时,传统云部署方案往往面临重重阻碍。本文将分享一套经过实战验证的Docker化部署方案,帮助开发者在完全离线的企业内网或受限制的本地环境中,搭建稳…...
避坑指南:在OpenHarmony ESP32上驱动INMP441麦克风时,I2S库编译报错的排查与解决
深度解析:OpenHarmony ESP32驱动INMP441麦克风的I2S编译问题全攻略 当你在OpenHarmony环境下为ESP32开发板移植INMP441数字麦克风驱动时,是否遇到过I2S库编译报错的困扰?这个问题看似简单,实则涉及编译系统、依赖管理和硬件抽象层…...
告别环境冲突:基于快马平台与homebrew打造团队高效统一开发环境
作为一名长期与团队协作的开发者,我深刻体会到环境配置不一致带来的痛苦。新同事入职要花一整天配环境,不同项目依赖冲突导致"在我机器上能跑"的经典问题,甚至同一项目组因为系统更新节奏不同而出现隐性兼容问题。最近尝试用homebr…...
从 LLM 到 OpenClaw:七步看懂 Prompt、Memory、MCP、Skills、Agent
从 LLM 到 OpenClaw:七步看懂 Prompt、Memory、MCP、Skills、Agent 这两年 AI 术语越来越多:LLM、MCP、Agent、Skills、OpenClaw。 如果你不是技术背景,第一次看到这串词,基本都会懵。下面我用一个统一场景来讲:把 AI…...
