Ruby怎么解析XML feed (如RSS/Atom)_Ruby解析XML feed教程

月夜之吻
发布: 2025-11-04 08:34:02
原创
752人浏览过
使用Nokogiri是解析Ruby中XML feed的最佳方式,支持高效处理RSS和Atom。首先安装nokogiri gem,通过require引入nokogiri和open-uri库,获取远程XML内容并用Nokogiri::XML解析。对RSS使用xpath('//item')遍历条目,提取title和link;解析Atom时注意命名空间,可移除或正确处理。也可用内置REXML库解析,但性能较低,适合小规模应用。常见建议包括添加User-Agent头、处理编码、封装代码复用。总结:推荐Nokogiri,结构清晰,功能强大。

ruby怎么解析xml feed (如rss/atom)_ruby解析xml feed教程

Ruby解析XML feed(如RSS或Atom)并不复杂,常用的方法是借助标准库中的rexml或更高效的第三方库如nokogiri。下面介绍如何使用这两种方式来读取和解析常见的RSS/Atom订阅源。

使用Nokogiri解析XML Feed(推荐)

这是最常用且功能强大的方式,支持XPath和CSS选择器,处理HTML和XML都很高效。

1. 安装 Nokogiri
在终端运行:

gem install nokogiri

或将它加入你的 Gemfile:

gem 'nokogiri'

2. 获取并解析 RSS 示例
以下代码从一个RSS地址获取内容,并提取每篇文章的标题和链接:

require 'nokogiri'
require 'open-uri'

url = 'https://www.php.cn/link/2f8ad0a8b0f357680b14408c30c53a11'
doc = Nokogiri::XML(open(url))

doc.xpath('//item').each do |item|
  title = item.at_xpath('title')     && item.at_xpath('title').content
  link  = item.at_xpath('link')      && item.at_xpath('link').content
  puts "标题: #{title}, 链接: #{link}"
end

3. 解析 Atom Feed 的例子
Atom 使用不同的标签命名空间,注意命名空间处理:

url = 'https://www.php.cn/link/2dfb6bf59bf35a07d6787f7f04c28e11'
doc = Nokogiri::XML(open(url))

设置命名空间

namespaces = doc.namespaces
doc.remove_namespaces! # 简化处理(可选)

doc.xpath('//entry').each do |entry|
  title = entry.at_xpath('title')    && entry.at_xpath('title').content
  link  = entry.at_xpath('link/@href') && entry.at_xpath('link/@href').value
  puts "文章: #{title} => #{link}"
end

使用 REXML(Ruby 内置,无需安装)

如果你不想依赖外部 gem,可以使用 Ruby 自带的 rexml 库。

示例:读取本地或远程 RSS

豆包AI编程
豆包AI编程

豆包推出的AI编程助手

豆包AI编程 483
查看详情 豆包AI编程

require 'rexml/document'
require 'open-uri'

content = open('https://www.php.cn/link/2f8ad0a8b0f357680b14408c30c53a11').read
doc = REXML::Document.new(content)

REXML::XPath.each(doc, '//item') do |item|
  title = item.elements['title']     && item.elements['title'].text
  link  = item.elements['link']      && item.elements['link'].text
  puts "标题: #{title} - 链接: #{link}"
end

注意:REXML 性能较低,不适合大文件或高频解析,适合小型脚本。

常见问题与建议

• 确保网络可访问 feed 地址,必要时添加 User-Agent 请求头。
• 某些网站会阻止无头请求,可用 open(url, 'User-Agent' => 'Ruby') 模拟浏览器
• 建议统一处理编码问题,多数 feed 为 UTF-8。
• 可封装成类或模块,便于复用。

总结

使用 Nokogiri 是 Ruby 中解析 XML feed 的最佳实践,语法清晰、性能好、社区支持强。对于简单场景,REXML 也能胜任。无论是处理 RSS 还是 Atom,关键是熟悉结构并正确提取节点。

基本上就这些,动手试试抓取你喜欢的博客或新闻源吧。

以上就是Ruby怎么解析XML feed (如RSS/Atom)_Ruby解析XML feed教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号