Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 最基本的Nokogiri程序失败了——文档问题还是Bug?_Ruby_Rubygems_Nokogiri - Fatal编程技术网

Ruby 最基本的Nokogiri程序失败了——文档问题还是Bug?

Ruby 最基本的Nokogiri程序失败了——文档问题还是Bug?,ruby,rubygems,nokogiri,Ruby,Rubygems,Nokogiri,我决定尝试一下Nokogiri,并直接从中复制了以下程序(仅添加require'rubygems'和I_KNOW\u I_AM_,使用LIBXML2的旧版和BUGGY版常量): 它没有返回任何结果。但是当我改变的时候 doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove')) 到 该计划如预期的那样运作。请注意,唯一的区别是在行尾添加了.read。我自己永远也不会明白这一点,因为几乎所有示例代码都没有.

我决定尝试一下Nokogiri,并直接从中复制了以下程序(仅添加
require'rubygems'
I_KNOW\u I_AM_,使用LIBXML2的旧版和BUGGY版常量):

它没有返回任何结果。但是当我改变的时候

    doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))

该计划如预期的那样运作。请注意,唯一的区别是在行尾添加了.read。我自己永远也不会明白这一点,因为几乎所有示例代码都没有.read。具有讽刺意味的是,其中一个地方是一个Nokogiri开发者(at)的帖子。API中有什么变化吗?我错过了什么

我用的是Nokogiri 1.3.2


谢谢。

我将您的(原始)代码复制并粘贴到一个Ruby文件中,并在我的系统(Ruby 1.8.6p369,Nokogiri 1.3.2)上运行,效果很好。您的环境中可能还有其他原因导致问题吗?撇开Nokogiri不谈,
打开了什么http://www.google.com/search?q=tenderlove“)
为您返回?

不确定您的问题是什么,但对
open
的调用来自
openuri
Not
nokogiri
。所以,做一些实验,让野口吉退出游戏

$ irb
>> require 'open-uri'
=> true
>> f = open('http://www.google.com/search?q=tenderlove')
=> #<File:/var/folders/LA/LACsuKOVHtaEgmBzsJcGAE+++TI/-Tmp-/open-uri.7455.0>
>> f.read
=> "<!doctype html><head><title>tenderlove - Google Search</title>...
$irb
>>需要“打开uri”
=>正确
>>f=打开('http://www.google.com/search?q=tenderlove')
=> #
>>阅读
=>“tenderlove-谷歌搜索。。。

我升级到了Nokogiri 1.3.3,并将libxml2升级到了2.7.3。我不再需要使用荒谬的
我知道我在使用旧版和BUGGY版的libxml2=1语句来避免错误消息,并且程序可以在没有无关信息的情况下运行。阅读。

检查你的Nokogiri和libxml版本总是很好的,以确保它们是最新的

截至今天(9/22/09),这是MacOS上的最新版本:

nokogiri -v
--- 
nokogiri: 1.3.3
warnings: [ ]

libxml: 
  compiled: 2.7.4
  loaded: 2.7.4
  binding: extension

(我在空警告数组中放置了一个空格,以防止它看起来像一个盒子。)

open('))返回#我的irb会话的行为与你的一样。如果我在没有.read的情况下使用Norokiri,它会返回,其他什么都不会返回。如果我使用.read,我会得到完整的文件。所以我不知道为什么将打开的URI传递给Nokogiri会激活除我之外的所有人的安装的读取方法。你使用的是什么版本的Ruby?Ruby 1.8.6(2008-08-11补丁级别287)[universal-darwin9.0]
$ irb
>> require 'open-uri'
=> true
>> f = open('http://www.google.com/search?q=tenderlove')
=> #<File:/var/folders/LA/LACsuKOVHtaEgmBzsJcGAE+++TI/-Tmp-/open-uri.7455.0>
>> f.read
=> "<!doctype html><head><title>tenderlove - Google Search</title>...
nokogiri -v
--- 
nokogiri: 1.3.3
warnings: [ ]

libxml: 
  compiled: 2.7.4
  loaded: 2.7.4
  binding: extension