news 2026/4/29 16:18:39

100 天学会爬虫 · Day 8:如何用 XPath 高效定位网页元素?(爬虫最常用解析方式之一)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
100 天学会爬虫 · Day 8:如何用 XPath 高效定位网页元素?(爬虫最常用解析方式之一)

在爬虫开发中,解析 HTML 的方式主要有三种:

  • 正则表达式(不推荐新手使用)

  • BeautifulSoup(简单易用)

  • XPath(最强大、最精确)

今天我们要学习的是爬虫工程师最喜欢的解析方式之一:

XPath —— 提取网页结构最强大的工具

只要你掌握 XPath,再复杂的 HTML 都能被你快速解析。


🔍 一、XPath 是什么?

XPath 全称:

XML Path Language(XML 路径语言)

虽然名字里带 XML,但它同样适用于HTML

它的作用是:

  • 通过路径查找节点

  • 精确定位网页元素

  • 快速提取文本、属性、子节点

你可以把 XPath 看成网页的“地图导航”:

从 /html/body/div[1]/h1 找到标题节点

非常直观、非常精确。


🧭 二、为什么爬虫必须掌握 XPath?

理由如下:

✔ 1. BeautifulSoup 不够精确

遇到多层嵌套或重复节点时,XPath 的定位能力远超 BeautifulSoup。

✔ 2. 数据结构复杂的网站,XPath 更容易处理

尤其是电商站点、资讯站点、层级列表网站。

✔ 3. XPath 语法非常统一

你学会一次,可以用一辈子。

✔ 4. lxml + XPath 的解析速度非常快

适合大规模爬虫工程。


🔧 三、用 lxml + XPath 的基础用法

安装 lxml:

pip install lxml

解析 HTML:

from lxml import etree html = etree.HTML("<html>...</html>") result = html.xpath("你的 XPath 表达式")

result会返回一个列表,包含匹配到的节点或文本。


🧪 四、XPath 常用语法(爬虫最常用 Top 10)


① 选取所有某标签节点

//h1 //div //a

② 选取具体 class 的标签

//h1[@class="title"]

③ 选取含有某部分 class 的节点(超常用)

//div[contains(@class, "item")]

适用于 class 多个值的情况:

<div class="item active main">

④ 选取文本内容

//h1/text()

⑤ 选取属性(如 src、href)

//img/@src //a/@href

⑥ 索引定位(从 1 开始)

//ul/li[1] # 第一个 li //ul/li[last()] # 最后一个 li

⑦ 选取子节点(/)

//div/h1

⑧ 选取任意深度节点(//)

//div//span

⑨ 选取包含文本的节点

//a[contains(text(), "Python")]

⑩ 多条件筛选(进阶)

//div[@class="item" and @data-id="123"]

🔍 五、实战示例:解析文章标题与内容

假设你抓取一个网页,结构如下:

<div class="article"> <h1 class="title">Python 爬虫入门</h1> <p class="summary">这是简介内容</p> </div>

XPath 提取:

提取标题:

title = html.xpath('//h1[@class="title"]/text()')

提取简介:

summary = html.xpath('//p[@class="summary"]/text()')

提取整个文章块:

article = html.xpath('//div[@class="article"]')[0]

🧩 六、解析列表结构(爬虫最常见场景)

网页中常见:

新闻列表
商品列表
评论列表
视频列表
结构可能是:

<ul class="news"> <li> <a href="/1.html">新闻 1</a> </li> <li> <a href="/2.html">新闻 2</a> </li> </ul>

提取所有标题:

titles = html.xpath('//ul[@class="news"]/li/a/text()')

提取所有链接:

links = html.xpath('//ul[@class="news"]/li/a/@href')

XPath 对列表解析极其强大。


🛠 七、如何在浏览器中获取 XPath?

Chrome 可以自动生成 XPath:

  1. 打开 Elements 面板

  2. 右键节点

  3. 点击Copy → Copy XPath

但注意:

  • 自动 XPath不够简洁

  • 很多路径层级过深

  • 建议自行优化

例如自动生成:

/html/body/div[2]/div[3]/div/h1

建议手写:

//h1[@class="title"]

更通用、更不易失败。

🔦 八、XPath 解析失败的常见原因


❌ 1. 页面由 JS 渲染(HTML 中没有数据)

此时应抓 Ajax 或使用 Selenium/Playwright。


❌ 2. class 有多个值,你却写成完整匹配

例如:

<div class="item active">

应写:

//div[contains(@class, "item")]

❌ 3. 标签层级不固定

//更稳妥。


❌ 4. 忘记加 text() 或 @href


✅ 总结

今天你学到了:

  • XPath 是最强大的 HTML 解析工具之一

  • 支持精确定位节点、属性、文本

  • 非常适合爬虫解析复杂网页

  • Chrome 可以辅助生成 XPath

  • XPath 常见的十大语法

  • XPath 在列表结构中的应用

  • XPath 失败的常见原因及解决方案

掌握 XPath 是你成为爬虫开发者的重要里程碑,一旦熟练,再复杂的页面都能迎刃而解。

如果你在写 XPath 时遇到:

  • 结构太复杂难以定位

  • 多层嵌套不知如何写路径

  • text() 提取不到内容

  • Chrome 生成的 XPath 不能用

  • 每个节点结构都不固定

可以加我微信cpseagogo,我可以帮你一起分析 HTML 结构和 XPath 写法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 15:49:32

社区医院管理系统毕业论文+PPT(附源代码+演示视频)

文章目录社区医院管理系统一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;数据库结构与测试用例系统功能结构后台运行截图项目部署源码下载社区医院管理系统 如需其他…

作者头像 李华
网站建设 2026/4/19 3:04:51

从长文本理解到智能代理:Moonshot AI Kimi模型的技术跃迁与行业影响

2025年7月&#xff0c;北京人工智能初创企业Moonshot AI推出的Kimi K2模型在全球AI研究界引发震动。这款具备万亿参数规模的开放权重模型&#xff0c;不仅在编码、数学等专业领域展现出媲美西方顶尖proprietary模型的性能&#xff0c;更以"智能代理"为核心理念&#…

作者头像 李华
网站建设 2026/4/29 6:12:19

@AutoWired报错一直找不到问题在哪?那可能是这个问题!

问题描述&#xff1a;个人在写feign远程调用的时候&#xff0c;写完client接口后&#xff0c;需要在其他类使用Autowired自动注入&#xff0c;但是一直出现爆红&#xff0c;大致报错意思就是提示&#xff08;Could not autowire. There is more than one bean of ‘ xxx ‘ typ…

作者头像 李华
网站建设 2026/4/19 3:08:22

一线大厂测试开发岗位面试经验与真题解析(2025年12月版)

基于2025年12月一线互联网企业&#xff08;如阿里、腾讯、字节跳动等&#xff09;的测试开发岗位面试实况&#xff0c;从岗位职责、面试流程、技术真题、实战案例到职业规划&#xff0c;为软件测试从业者提供系统化参考。随着AI测试工具与敏捷开发的普及&#xff0c;企业对测试…

作者头像 李华
网站建设 2026/4/24 2:59:16

【毕业设计】SpringBoot+Vue+MySQL 养老院管理系统平台源码+数据库+论文+部署文档

摘要 随着我国老龄化进程的加速&#xff0c;养老问题已成为社会关注的焦点。传统的养老院管理模式存在信息孤岛、效率低下、服务不透明等问题&#xff0c;难以满足现代养老服务的需求。信息化管理系统的引入能够有效提升养老院的管理效率和服务质量&#xff0c;实现资源优化配置…

作者头像 李华
网站建设 2026/4/24 21:11:02

探索宽带宽角度与偏振不敏感的透明光子晶体仿真之旅

宽带宽角度和偏振不敏感的透明光子晶体 光子晶体的仿真在光学领域&#xff0c;宽带宽角度和偏振不敏感的透明光子晶体犹如一颗璀璨的明珠&#xff0c;吸引着众多科研人员与工程师的目光。今天咱们就来唠唠这神奇的光子晶体以及与之紧密相关的仿真。 光子晶体&#xff1a;光学世…

作者头像 李华