当前位置: 首页 > news >正文

爬虫解析网页,正则表达式与XPath简单运用

正则表达式(Regular Expressions)

  • 什么是正则表达式:

    可以直接理解为使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
  • 使用方法和遵守规则

    1,限定符 (特殊字符)

? :代表其前一个字符出现0次或一次

如图字符c后加个?,表示其可有可无。

* :代表匹配0个或多个字符

如图字符b后加个*,表示b可以出现0次或多次

+:匹配出现一次及以上的字符

如图将字符*换成+后,b可以匹配出现一次或多次

{}:可表示字符出现次数

希望字符出现2到6次,可写成{2,6}

希望字符出现2次以上,可写成{2,}

2,“或”运算符

| :表示或运算

如图字符要么匹配pen要么匹配heal

记得要加()否则会出现下图,要么匹配a pen要么匹配heal

3,字符类

^:匹配除了^后列出的【以外】的字符

【】:方括号里表示要匹配的字符。且可匹配范围,【a-z】代表所有小写英文字符,【a-zA-Z】代表所有英文字符,【a-zA-Z0-9】代表所有英文字符和数字

如图匹配了除数字外的所有字符

4,元字符

\d 匹配一个数字字符。等价于 [0-9]。

\D 匹配一个非数字字符。等价于 [^0-9]

\f 匹配一个换页符。

\n 匹配一个换行符。

\r 匹配一个回车符。

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

. 匹配任意字符

更多的元字符可参考这篇文章

贪婪匹配与懒惰匹配

贪婪匹配:.+

懒惰匹配:.+?

实例:匹配ip地址

由于.为元字符,所以用\转译

有需要的朋友可以使用

XPath(XML Path Language)

  • 基础语法

/:从根节点选取。/html 表示从 HTML 文档的根节点 <html> 开始选取,它是一个绝对路径表达式 。

//:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。//div 可以选取文档中所有的 <div> 元素节点。

  • 属性定位

想找到class属性值为lay-out的div标签: //div[@class="lay-out"]

  • 层级或索引定位

找到class属性值为lay的div的直系子标签ul下的第三个子标签li下的直系子标签a: //div[@class="tang"]/ul/li[3]/a

  • 逻辑运算

找到href属性值为空且class属性值为fa的a标签 //a[@href="" and @class="fa"]

  • 模糊匹配

找到class属性值中包含da的div标签://div[contains(@class, "da")]

  • 取文本

/表示获取某个标签下的文本内容 :

//div[@class="fa"]/p[3]/text()

//表示获取某个标签下的文本内容和所有子标签下的文本内容:

//div[@class="fa"]//text()

  • 取属性

取到class属性值为fa的div下的第二个子标签li下的直系子标签a 中的href值:

//div[@class="fa"]//li[2]/a/@href

浏览器可直接获取xpath路径:在爬取网站页面f12,右键你想获取的标签选择复制xpath即可

http://www.jsqmd.com/news/475460/

相关文章:

  • 【2026年最新600套毕设项目分享】springboot大型超市前后台系统(14140)
  • Flutter 三方库 jaspr_lints 的鸿蒙化适配指南 - 让 Web 开发拥有 Flutter 级的严谨、构筑鸿蒙 Web 应用的静态防线、打造高性能 HTML 渲染的最佳实践
  • 基于知识库(RAG)系统打造由大模型(LLM)驱动NPC游戏的技术设想
  • 模型的容量与控制:欠拟合与过拟合的博弈
  • 2026年OpenClaw极简部署教程,两步拥有专属AI助理!
  • 你是一位专注于趋势交易的 A 股投资分析师
  • Python实现智能聊天机器人
  • 2026年评价高的iOS应用分发品牌推荐:app应用分发/应用分发平台/iOS内测应用分发好评推荐公司 - 品牌宣传支持者
  • Flutter 三方库 convex_hull 的鸿蒙化适配指南 - 精准凸包算法计算、支持高效几何图形处理、助力鸿蒙端复杂 UI 交互设计
  • 效率升级:为什么JamTools值得成为你的必备工具软件
  • Redis面试题 03
  • OpenClaw的心跳30分钟才跳一次?Clawith:15秒感知世界,Agent终于有了自主意识
  • Typora安装教程(激活)
  • Java正则表达式基础知识
  • Flutter 三方库 foodb 鸿蒙适配指南 - 构建工业级 CouchDB 兼容的分布式 NoSQL 存储方案
  • 家长实测|3家少儿机器人编程机构真实体验
  • RAG跨页表格怎么自动对齐合并?
  • Spring面试题 02
  • 老板看不见的修仙路
  • 多版本gcc共存方法探索
  • 算法题练习Day1:B2006 地球人口承载力估计
  • 【完全免费】电脑桌面必备的置顶便签,待办事项一目了然,还可以设置专属闹钟,让你再也不怕忘记任何事情。
  • STP理论知识
  • Flutter 三方库 m3u_nullsafe 鸿蒙适配指南 - 实现流媒体播放列表精准解析、在 OpenHarmony 上打造极致稳定的直播交互实战
  • springBoot中使用Validator进行参数校验(转载)
  • Flutter 三方库 backoff 鸿蒙适配指南 - 实现高性能指数退避重试与系统高韧性实战
  • Gossip协议(谣言传播机制)
  • 栈数据结构回顾
  • 【技术分享】PostgreSQL+pgvector在遥感影像检索的AI 赋能实践
  • Flutter 三方库 webfeed_plus 的鸿蒙化适配指南 - 全能 RSS 与 Atom 解析、支持 ITunes 扩展内容、打造鸿蒙端极致阅读神器