XPath 语法与爬虫实战总结指南

Python爬虫进阶:XPath语法精讲与实战避坑指南 本文深入讲解Python爬虫中XPath语法的进阶用法与实战技巧,涵盖路径表达式、属性匹配、轴定位等核心知识点,并提供Chrome/Firefox调试工具使用指南。通过电商、论坛等真实案例解析复杂网页结构,分享性能优化、反爬应对等实战经验,帮助开发者高效避坑并提升爬虫效率。 阅读详情

目录

一、XPath 是什么?

二、 XPath 基础语法速查表

三、常见 XPath 示例与说明 

四、使用 xpath 提取网页内容详细示例

1. 提取元素的文本内容

2. 提取链接地址(href 属性)

3. 提取多个列表项

4. 提取第一个或最后一个元素

5. 使用 contains() 匹配部分 class

6. 提取标签的属性值

7. 提取嵌套结构文本

8. 提取指定文本的元素

9. 多条件选择与逻辑表达式

10. 使用 starts-with() 匹配属性前缀

11. 提取父元素或兄弟元素

 三、 XPath 小的综合代码

XPath 总结


一、XPath 是什么?

XPath(XML Path Language)是一种用于在 XML 或 HTML 文档中定位和提取数据的语言。

在 Web 爬虫中,它被广泛用于解析 HTML 页面,精准定位你需要的标签、属性和内容。

在 lxml 或 scrapy 中,XPath 是最常用的选择器之一。

二、 XPath 基础语法速查表

表达式 含义
/ 从根节点选取
// 从任意位置选取
. 当前节点
.. 当前节点的父节点
@ 属性

三、常见 XPath 示例与说明 

表达式 说明
//div 选取所有 <div> 标签
//div[@class="item"] class 为 item 的 div
//a/@href 提取所有链接地址
//p/text() 提取所有 <p> 标签中的文本
//ul/li[1] 提取第一个 <li>
//ul/li[last()] 最后一个 <li>
//div[contains(@class, "content")] class 含有 content 的 div
//span[starts-with(@class, "tag-")] class 以 tag- 开头的 span
//a[text()="登录"] 文本内容为“登录”的链接
//div[@id="main"]/p[2]/text() id 为 main 的 div 中第二个 <p> 的文本

四、使用 xpath 提取网页内容详细示例

每个模块包含:

  • 页面 HTML 示例

  • Python CSS 选择器提取代码

  • 简要文字说明

1. 提取元素的文本内容

提取标签中的纯文本内容。

HTML 示例

<h1 class="title">这是主标题</h1>

Python

from lxml import html

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

2. 提取链接地址(href 属性)

提取超链接的地址

<

Java实现网络爬虫-Java入门|Java基础课程 目标 网络爬虫的是做什么的? 手动写一个简单的网络爬虫; 1. 网络爬虫 1.1. 名称 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚 本。 另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 1.2. 简述 网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到 在网页中的其它... 阅读详情

相关推荐

Python 网络爬虫全面指南

通过学习 Python 网络爬虫,您可以轻松实现从互联网获取有价值的数据,从而为您的项目提供强大的数据支持。持续优化爬虫技术,既能提高效率,又能减少对目标网站的影响,实现安全合规的爬取!

qq_20245171的博客 2065

Python 爬虫项目:xpath 语法精讲,精准解析网页结构化数据

本文详细介绍了Python爬虫中使用XPath解析网页的技术要点。XPath通过路径表达式精准定位HTML/XML节点,相比BeautifulSoup具有更高解析效率和灵活性。文章系统讲解了XPath的基础语法、节点筛选、数据提取等核心知识,并以豆瓣电影TOP250为例,完整演示了从请求到解析、数据提取和存储的全流程。实战部分包含单页爬取、全量数据获取以及CSV/TXT两种存储方案,并提供了常见问题解决方案和性能优化建议。最后对比了XPath与BeautifulSoup的适用场景,强调XPath在结构化数据

2503_91057718的博客 1142

〖Python网络爬虫实战⑬〗- XPATH实战案例

我们通过学习了简单的Xpath操作,以及在另外一篇xpath的实战案例下,本文,继续分享一个关于xpath的实战案例。xpath最大的难点就是如何写下path后面的语法,我们要找到对应的节点,就可以了。

爱吃饼干的小白鼠的博客 1540

〖Python网络爬虫实战⑫〗- XPATH语法介绍

前面我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,过程比较烦琐,且万一有地方写错了,可能会导致匹配失败、所以使用正则表达式提取页面信息多少还是有些不方便.对于网页的节点来说、可以定义id,class或其他属性,而且节点之间还有层次关系,在网页中可以通过XPath或CSS选择器来定位一个或多个节点。那么、在解析页面时,利用XPath或CSS选择器提取某个节点,然后调用相应方法获取该节点的正文内容或者属性,不就可以提取我们想要的任意信息了吗?

爱吃饼干的小白鼠的博客 1016

自然二进制数与格雷码的相互转换

自然二进制数与格雷码两者优势: 自然二进制数的编码方式简单明了,容易理解,在加减运算中能够直接进行,同时十分方便进行一些位运算操作(如移位、取反等)。 格雷码计数时只有一位变化,可有效减少计数器状态的冗余转换,同时在传输数据时能够减小传输错误的概率,此外带权重编码处理更加方便。 在一定程度上自然二进制数与格雷码优缺点基本相反,综上所述,自然二进制数和格雷码各有优劣之处,需要根据具体应用场景选择合适的编码方式。简单来说,在计数器和编码器中,倾向于使用格雷码;而在进行加减运算时,则倾向于使用自然二进制数。

Loudrs的博客 7494

基于单片机智能家居控制系统设计

*单片机设计介绍,基于单片机智能家居控制系统设计。

QQ2193276455的博客 1717

Cadence公司的数字IC设计工具:综合工具(Genus)——(2)

介绍Cadence公司的数字IC设计工具Genus

qq_42922513的博客 1945

ISMN数据处理

可批量下载,十分方便

m0_46268055的博客 1216

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(五)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1513

还在用 RaiDrive/Rclone 挂载网盘?教您使用Windows 原生 WebDAV 丝滑直连 AList/Openlist,让你的网盘秒变本地硬盘!

网盘文件分散管理?😩 别再依赖第三方工具了!本文教你如何在 Windows 下,利用原生 WebDAV 功能,将 Openlist 网盘直接映射为本地硬盘!💻 操作简单,告别繁琐,让你的云端文件像本地文件一样丝滑!🚀 轻松实现高效管理,快来体验吧!

XiaoqiangClub的博客 2978

电子科技大学计算机预推免(最终去向)

电子科技大学,预推免报名时必须要有一封本校老师写的推荐信,推荐信基本上就是复试的入场券,所以一定要提前联系老师,拿到推荐信。只要有机会进了面试,我觉得老师对于双非并不歧视,面试的个人表现才是关键性决定因素,技巧性也是很强的,如果有需要帮助的,欢迎私信~~

D1379951481的博客 3368

【AlphaFold2】深入浅出,讲解Evoformer|学习笔记

本篇博客是围绕youtube德国博主Kilian Mandon()的《从头实现AlphaFold2:AlphaFold Decoded》的第五期视频讲解和note-book内容写成的笔记,加上了自己的理解和对相关概念的解释。上期我们讲解了AlphaFold2的特征提前的部分【AlphaFold2】Feature extraction:提取特征,为模型输入做准备|Datapipeline讲解。本期,我们将介绍AlphaFold2中最为庞大且最为重要的部分——Evoformer。

Yaoyao2024的博客 2016

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 使用 lxml.html 的 CSS 选择器提取教程
下一篇: python aiohttp使用cookie
Ghostycode
博客等级 码龄5年 132粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值