我遇到了让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?
答案 0 :(得分:5)
要调试此类问题,我们需要您提供更多信息。由于您没有提供有效的URL,并且因为我们知道Nokogiri可以解决这类问题,所以调试工作就在您身上。
以下是我要做的测试:
在IRB:
open('http://whateverURLyouarehiding.com').read
Nokogiri::HTML(...)
中包装上一个打开语句时会得到什么。这也需要保留前一行中的.read
,因此Nokogiri正在接收页面的主体,而不是IO流。.read
。这将告诉Nokogiri读取IO流是否存在问题,但我严重怀疑它有问题,因为我一直使用它。那时我怀疑你的系统有问题。doc.errors
的值。它可能是在文档中发现错误,如果是这样,它们将被捕获。