全网整合营销服务商

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

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

Ruby Nokogiri库怎么解析HTML和XML

Nokogiri 是 Ruby 中基于 libxml2 的高性能 HTML/XML 解析库,支持 CSS 选择器与 XPath;用 Nokogiri::HTML 解析容错 HTML,Nokogiri::XML 解析严格 XML;推荐优先使用 css/at_css 提取元素,XPath 适用于复杂定位;注意编码转换以防中文乱码。

Nokogiri 是 Ruby 中最成熟、最常用的 HTML/XML 解析库,它底层基于 libxml2(和 libxslt),速度快、稳定性高,支持 CSS 选择器和 XPath,语法简洁直观。

加载 HTML 或 XML 文档

Nokogiri::HTML 解析 HTML(自动修复不规范标签),用 Nokogiri::XML 解析严格 XML(遇到格式错误会报错):

  • doc = Nokogiri::HTML(html_string)
  • doc = Nokogiri::HTML(File.open("page.html"))
  • doc = Nokogiri::XML(xml_string)
  • doc = Nokogiri::XML(File.read("data.xml"))

如果不确定输入是否严格合规,又想解析 XML 内容,可用 Nokogiri::HTML.fragment 提取片段,或加选项 strict: false 容错。

用 CSS 选择器提取元素

这是最常用的方式,写法接近前端开发习惯:

  • doc.css("h1") → 所有

    元素

  • doc.css(".title") → class="title" 的元素
  • doc.css("div#main a[href]") → main div 内带 href 的链接
  • doc.at_css("meta[name='description']") → 第一个匹配元素(返回 Node,不是 NodeSet)

注意:css 返回 Nokogiri::XML::NodeSet(可遍历的集合),at_css 返回单个 Node 或 nil,适合取标题、摘要等唯一内容。

用 XPath 提取更复杂结构

XPath 更强大,适合嵌套定位、条件判断、位置索引等:

  • doc.xpath("//ul[@class='nav']/li[1]/a/text()") → 导航栏第一个链接文字
  • doc.xpath("//*[contains(@class, 'price')]") → class 含 price 的任意元素
  • doc.at_xpath("//img/@src")&.value → 第一张图片的 src 属性值

XPath 表达式里属性用 @attr,文本内容用 text(),注意返回的是 NodeSet,取值需调用 .text.[]&.value 等方法。

读取属性、文本与修改内容

拿到 Node 后,常用操作包括:

  • node.text → 去除标签的纯文本(含子节点文本)
  • node.content → 同 text,但不合并空白
  • node['href']node.attr("href") → 读取属性
  • node.set_attribute("class", "new-class") → 修改属性
  • node.inner_html = "new" → 替换内部 HTML
  • node.remove → 删除该节点

批量处理时,通常配合 each 遍历 NodeSet,例如:doc.css("script").remove 可一键清除所有 script 标签。

不复杂但容易忽略:Nokogiri 默认使用 UTF-8 编码,若源文档是 GBK、Shift-JIS 等,需先转码再解析,否则中文可能乱码。可用 string.encode!("UTF-8", "GBK", invalid: :replace) 预处理。


# css  # html  # 前端  # node  # 编码  # 前端开发  # 中文乱码  # ai  # ruby  # String  # xml  # class  # nil  # href  # 选择器  # ul  # li  # 第一个  # 遍历  # 最常用  # 的是  # 这是  # 文档  # 适用于  # 不确定  # 速度快 


相关文章: 在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  视频网站制作教程,怎么样制作优酷网的小视频?  网站企业制作流程,用什么语言做企业网站比较好?  如何快速上传建站程序避免常见错误?  Python lxml的etree和ElementTree有什么区别  php json中文编码为null的解决办法  长沙企业网站制作哪家好,长沙水业集团官方网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何确保FTP站点访问权限与数据传输安全?  网站网页制作专业公司,怎样制作自己的网页?  宝塔面板如何快速创建新站点?  如何选择最佳自助建站系统?快速指南解析优劣  如何选择高效响应式自助建站源码系统?  建站主机默认首页配置指南:核心功能与访问路径优化  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  表情包在线制作网站免费,表情包怎么弄?  购物网站制作公司有哪些,哪个购物网站比较好?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何快速生成可下载的建站源码工具?  宝塔新建站点为何无法访问?如何排查?  建站DNS解析失败?如何正确配置域名服务器?  如何获取免费开源的自助建站系统源码?  如何在万网自助建站平台快速创建网站?  建站VPS推荐:2025年高性能服务器配置指南  如何在云主机快速搭建网站站点?  网站制作模板下载什么软件,ppt模板免费下载网站?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  建站之星安装后如何配置SEO及设计样式?  如何在IIS中新建站点并解决端口绑定冲突?  Python路径拼接规范_跨平台处理说明【指导】  淘宝制作网站有哪些,淘宝网官网主页?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何选择美橙互联多站合一建站方案?  ,南京靠谱的征婚网站?  建站主机选购指南:核心配置优化与品牌推荐方案  开心动漫网站制作软件下载,十分开心动画为何停播?  深圳网站制作案例,网页的相关名词有哪些?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星展会模版如何一键下载生成?  南宁网站建设制作定制,南宁网站建设可以定制吗?  C#如何在一个XML文件中查找并替换文本内容  官网建站费用明细查询_企业建站套餐价格及收费标准指南  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何通过二级域名建站提升品牌影响力?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开? 

您的项目需求

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