Nokogiri - 使用XML,而不是HTML

wer*_*erm 4 ruby xml nokogiri

我在让Nokogiri正常工作时遇到了问题.我正在使用1.4.2版本的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
Run Code Online (Sandbox Code Playgroud)

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

Name 1
Name 2
Name 3
Run Code Online (Sandbox Code Playgroud)

人群疯狂.我调整了一些事情,对代码做了一些调整......

require 'nokogiri'
require 'open-uri'

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

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

是否有任何理由可以使用XML文件,而不是HTML?

the*_*Man 5

要调试此类问题,我们需要您提供更多信息.由于您没有提供有效的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. 如果确实存在,则检查doc.errorsNokogiri解析文档后的值.它可能是在文档中发现错误,如果是这样,它们将被捕获到那里.