El Programa Nokogiri más básico se produce un error - Problema de documentación o falla?

StackOverflow https://stackoverflow.com/questions/1134363

  •  16-09-2019
  •  | 
  •  

Pregunta

decidí darle una oportunidad Nokogiri, y copié el siguiente programa directamente desde http: // nokogiri.rubyforge.org/nokogiri/Nokogiri.html (añadiendo sólo el require 'rubygems' y la constante de I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2):

require 'rubygems'
I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 = 1
require 'nokogiri'
require 'open-uri'

# Get a Nokogiri::HTML:Document for the page we’re interested in...

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

# Do funky things with it using Nokogiri::XML::Node methods...

####
# Search for nodes by css
doc.css('h3.r a.l').each do |link|
  puts link.content
end

no hay ningún resultado. Pero cuando cambié

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

a

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

el programa funcionó como se esperaba. Observe que la única diferencia fue la adición de la .read al final de la línea. Nunca hubiera dado cuenta de esto por mí mismo, porque casi todos los bits de código de ejemplo hojas de los .read. El único lugar que lo incluyó, irónicamente era un mensaje por uno de los desarrolladores Nokogiri (a http://tenderlovemaking.com/2008/11/18/underpant-free-excitement ). Hizo algo en el cambio de API? ¿Qué me estoy perdiendo?

Estoy usando Nokogiri 1.3.2.

Gracias.

¿Fue útil?

Solución 3

He actualizado a 1.3.3 Nokogiri, y nos pasaron a libxml2 2.7.3. Ya no necesito utilizar la instrucción I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 = 1 ridícula para evitar mensajes de error y el programa de obras sin la .read extraña.

Otros consejos

He copiado y pegado el código (original) en un archivo de Ruby y encontré que en mi sistema (rubí 1.8.6p369, Nokogiri 1.3.2) y funcionó bien. ¿Puede haber algo más en su entorno que podría estar causando el problema? Nokogiri a un lado, lo que hace de retorno open('http://www.google.com/search?q=tenderlove') para usted?

No estoy seguro que su problema es, pero la llamada a open es de open-uri no nokogiri. Así que hacer algunos experimentos teniendo nokogiri fuera de juego.

$ 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>...

Siempre es bueno comprobar su versión de Nokogiri y libxml para asegurarse de que está en curso.

A partir de hoy (9/22/09) esto es corriente en MacOS:

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

libxml: 
  compiled: 2.7.4
  loaded: 2.7.4
  binding: extension

(pongo un espacio dentro de la matriz advertencias vacías para evitar que el aspecto de un cuadro.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top