全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Ruby Nokogiri库怎么用XPath搜索文档

Nokogiri 是 Ruby 中最常用的 HTML/XML 解析库,用 XPath 搜索高效直接;加载文档后调用 search 返回 NodeSet,at 返回单个 Element,支持丰富 XPath 语法及命名空间处理。

Nokogiri 是 Ruby 中最常用的 HTML/XML 解析库,用 XPath 搜索非常直接高效。核心就是调用 searchat 方法,传入合法的 XPath 表达式。

基础用法:加载文档后直接 search

先解析 HTML 或 XML 字符串(或文件),再用 search 返回所有匹配节点(NodeSet),用 at 返回第一个匹配节点(Element):

require 'nokogiri'

html = '

Hello

World

' doc = Nokogiri::HTML(html)

查找所有 p 标签

ps = doc.search('//p') # → NodeSet 包含两个

查找带 class="intro" 的 p 标签

intro_p = doc.at('//p[@class="intro"]') # → Element 对象

获取文本内容

intro_p.text # → "Hello"

常用 XPath 写法示例

XPath 支持丰富语法,以下是最常遇到的几种场景:

  • //div[@id='main'] —— 查找任意层级下 id 为 main 的 div
  • //a[contains(@href, 'github')] —— href 属性包含 "github" 的链接
  • //ul/li[1] —— 第一个 li 子元素(注意:XPath 索引从 1 开始)
  • //input[@type='text' and @name] —— type=text 且有 name 属性的 input
  • //div//span —— div 内任意深度的 span(后代,非直系子元素)
  • //div/child::span —— div 的直接子 span(等价于 //div/span

处理结果:NodeSet 和 Element

search 返回的是 Nokogiri::XML::NodeSet,可像数组一样遍历或索引;at 返回单个 Nokogiri::XML::Element,更轻量:

  • 遍历结果:doc.search('//a').each { |a| puts a['href'] }
  • 取第一个:doc.search('//img').first['src']doc.at('//img')['src']
  • 检查是否存在:doc.at('//button[@disabled]') ? '禁用中' : '可用'
  • 提取多个属性:doc.search('//meta').map { |m| [m['name'], m['content']] }

注意命名空间和 HTML 特殊性

如果是 XML 且含命名空间(如 SVG、Atom),需先声明前缀:

xml = '...'
doc = Nokogiri::XML(xml)
doc.search('//dc:creator', 'dc' => 'http://purl.org/dc/elements/1.1/')

而对 HTML 文档,Nokogiri 默认使用宽松解析,XPath 大多能直接用。但注意:
– HTML 标签名不区分大小写,但 XPath 表达式里建议用小写(//div 而非 //DIV);
– 某些属性名在 HTML 中是布尔型(如 checked),XPath 中仍用 [@checked] 判断是否存在即可。

基本上就这些。XPath 写熟了,配合 Nokogiri 的 search/at,抓取和校验结构化内容非常顺手。


# html  # git  # node  # svg  # github  # ai  # ruby  # 命名空间  # xml  # 字符串  # 布尔型  # map  # href  # input  # ul  # li  # atom  # 第一个  # 遍历  # 文档  # 最常用  # 的是  # 加载  # 多个  # 布尔  # 几种  # 再用 


相关文章: 如何快速登录WAP自助建站平台?  如何用PHP工具快速搭建高效网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何快速选择适合个人网站的云服务器配置?  学校为何禁止电信移动建设网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何获取开源自助建站系统免费下载链接?  php json中文编码为null的解决办法  如何在七牛云存储上搭建网站并设置自定义域名?  一键网站制作软件,义乌购一件代发流程?  如何用PHP快速搭建CMS系统?  平台云上自主建站:模板化设计与智能工具打造高效网站  ,在苏州找工作,上哪个网站比较好?  招商网站制作流程,网站招商广告语?  5种Android数据存储方式汇总  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  太原网站制作公司有哪些,网约车营运证查询官网?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何高效搭建专业期货交易平台网站?  如何解决ASP生成WAP建站中文乱码问题?  如何在企业微信快速生成手机电脑官网?  如何通过商城自助建站源码实现零基础高效建站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  建站之星安装后如何自定义网站颜色与字体?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何用y主机助手快速搭建网站?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  高防服务器租用如何选择配置与防御等级?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  高防服务器租用首荐平台,企业级优惠套餐快速部署  详解jQuery中基本的动画方法  建站之星导航如何优化提升用户体验?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  IOS倒计时设置UIButton标题title的抖动问题  如何在Tomcat中配置并部署网站项目?  建站主机SSH密钥生成步骤及常见问题解答?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  大连网站制作公司哪家好一点,大连买房网站哪个好?  广州商城建站系统开发成本与周期如何控制?  外贸公司网站制作哪家好,maersk船公司官网?  七夕网站制作视频,七夕大促活动怎么报名?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。