gpt4 book ai didi

ruby - Nokogiri - 使用 XML,而不是 HTML

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:37 27 4
gpt4 key购买 nike

我在让 Nokogiri 正常工作时遇到问题。我将 1.4.4 版与 Ruby 1.9.2 一起使用。

我安装了 libxml2 libxslt 并且是最新的。当我运行带有 XML 的 Ruby 脚本时,效果很好。

require 'nokogiri'

doc = Nokogiri::XML(File.open("test.xml"))
doc = doc.css("name").each do |node|
puts node.text
end

进入CL,运行ruby test.rb,返回

Name 1
Name 2
Name 3

人群变得疯狂。我调整了一些东西,对代码做了一些调整...

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open("http://domain.tld"))
doc = doc.css("p").each do |node|
puts node.text
end

回到 CL,ruby test.rb,返回……什么都没有!只是一个新的空行。

有什么理由可以处理 XML 文件而不是 HTML 文件吗?

最佳答案

要调试此类问题,我们需要您提供更多信息。由于您没有提供有效的 URL,并且因为我们知道 Nokogiri 可以很好地解决此类问题,所以调试工作就落在您身上了。

下面是我要测试的内容:

在 IRB 中:

  1. 当您执行以下操作时是否获得输出:open('http://whateverURLyouarehiding.com').read
  2. 如果返回一个有效文档,当您将前面的 open 语句包装在 Nokogiri::HTML(...) 中时,您会得到什么。这也需要保留上一行中的 .read,因此 Nokogiri 正在接收页面的主体,而不是 IO 流。
  3. 尝试上面的 #2,但删除 .read。这将告诉 Nokogiri 读取 IO 流是否有问题,但我非常怀疑它是否有问题,因为我一直在使用它。那时我会怀疑你的系统有问题。
  4. 如果您在#2 和#3 中获取文档,那么问题可能出在您的访问器中;我怀疑您要查找的内容不存在。
  5. 如果确实存在,则在 Nokogiri 解析文档后检查 doc.errors 的值。它可能会在文档中发现错误,如果是这样,它们将在那里被捕获。

关于ruby - Nokogiri - 使用 XML,而不是 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com