Pregunta

Estoy usando Mechanize para extraer los enlaces de la página. Para facilitar el desarrollo, estoy usando fakeweb que ver la respuesta súper rápido para obtener menos tiempo de espera y molesto con cada ejecución de código.

tags_url = "http://website.com/tags/"
FakeWeb.register_uri(:get, tags_url, :body => "tags.txt")

agent = WWW::Mechanize.new
page = agent.get(tags_url)
page.links.each do |link|
   puts link.text.strip
end

Al ejecutar el código anterior, que dice:

nokogiri_test.rb:33: undefined method `links' for #<WWW::Mechanize::File:0x9a886e0> (NoMethodError)

Después de inspeccionar la clase de objeto de página

puts page.class # => File

Si no hago engañar a la tags_url, funciona desde la clase de página es ahora Página

puts page.class # => Page

Así que, ¿cómo puedo usar el fakeweb con mecanizar para volver página en lugar de objeto File?

¿Fue útil?

Solución

Uso FakeWeb para repetir una solicitud HTTP prebuscados:

tags_url = "http://website.com/tags/"
request  = `curl -is #{tags_url}`
FakeWeb.register_uri(:get, tags_url, :response => request)

agent = WWW::Mechanize.new
page = agent.get(tags_url)
page.links.each do |link|
   puts link.text.strip
end

Llamando rizo con la bandera -i incluirá encabezados en la respuesta.

Otros consejos

Se puede fijar fácilmente que la adición de la opción :content_type => "text/html" que su llamada FakeWeb.register_uri

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