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,语法简洁直观。
用 Nokogiri::HTML 解析 HTML(自动修复不规范标签),用 Nokogiri::XML 解析严格 XML(遇到格式错误会报错):
doc = Nokogiri::HTML(html_string)doc = Nokogiri::HTML(File.open("page.html"))doc = Nokogiri::XML(xml_string)doc = Nokogi
ri::XML(File.read("data.xml"))如果不确定输入是否严格合规,又想解析 XML 内容,可用 Nokogiri::HTML.fragment 提取片段,或加选项 strict: false 容错。
这是最常用的方式,写法接近前端开发习惯:
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 更强大,适合嵌套定位、条件判断、位置索引等:
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" → 替换内部 HTMLnode.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小时内与您取得联系。