Estoy tratando de entender Nokogiri. ¿Alguien tiene un enlace a un ejemplo básico de Nokogiri parse/scrape mostrando el árbol resultante? Creo que realmente ayudaría a mi comprensión.¿Cuáles son algunos ejemplos del uso de Nokogiri?
Respuesta
Usando IRB y Ruby 1.9.2:
carga Nokogiri:
1.9.2-p290 :001 > require 'nokogiri'
true
analizar un documento:
1.9.2-p290 :002 > doc = Nokogiri::HTML('<html><body><p>foobar</p></body></html>')
#<Nokogiri::HTML::Document:0x1012821a0
@node_cache = [],
attr_accessor :errors = [],
attr_reader :decorators = nil
Nokogiri le gusta documentos bien formados. Tenga en cuenta que agregó el DOCTYPE
porque lo analicé como un documento. También es posible analizar como un fragmento de documento, pero eso es bastante especializado.
1.9.2-p290 :003 > doc.to_html
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>foobar</p></body></html>\n"
Buscar en el documento para encontrar la primera <p>
nodo utilizando CSS y apoderarse de su contenido:
1.9.2-p290 :004 > doc.at('p').text
"foobar"
Usar un nombre de método diferente para hacer la misma cosa:
1.9.2-p290 :005 > doc.at('p').content
"foobar"
Buscar en el documento para todos los nodos <p>
dentro de la etiqueta <body>
, y capture el contenido de la primera. search
devuelve un conjunto de nodos, que es como una matriz de nodos.
1.9.2-p290 :006 > doc.search('body p').first.text
"foobar"
cambiar el contenido del nodo:
1.9.2-p290 :007 > doc.at('p').content = 'bar'
"bar"
emitirá un documento analizado como HTML:
1.9.2-p290 :008 > doc.to_html
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>bar</p></body></html>\n"
eliminar un nodo:
1.9.2-p290 :009 > doc.at('p').remove
#<Nokogiri::XML::Element:0x80939178 name="p" children=[#<Nokogiri::XML::Text:0x8091a624 "bar">]>
1.9.2-p290 :010 > doc.to_html
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body></body></html>\n"
En cuanto a raspar, hay muchas preguntas sobre SO sobre utilizando Nokogiri para desgarrar el HTML de los sitios. La búsqueda de StackOverflow para "nokogiri and open-uri" debería ayudar.
También se encuentra una buena introducción del cocreador: http://www.engineyard.com/blog/2010/getting-started-with-nokogiri/ también el diagrama de árbol mencionado en el artículo se puede ver en: http://rubyreflector.com /Estructuras de datos – user1094747
- 1. ¿Cuáles son algunos ejemplos de "buen uso" de fundición dinámica?
- 2. ¿Cuáles son algunos buenos ejemplos de uso de WPF Datagrid?
- 3. ¿Cuáles son algunos ejemplos de interfaces Go?
- 4. ¿Cuáles son algunos ejemplos impresionantes de código funcional?
- 5. ¿Cuáles son algunos buenos ejemplos de Mixins y/o Rasgos?
- 6. ¿Cuáles son algunos ejemplos de casos de uso para literales de símbolos en Scala?
- 7. ¿Qué es OSGi y cuáles son algunos ejemplos de su uso?
- 8. ¿Cuáles son buenos ejemplos de uso de 'enlace' en clojure?
- 9. ¿Cuáles son algunos ejemplos de cómo los tipos anónimos son útiles?
- 10. ¿Cuáles son algunos buenos recursos sobre el uso de Lucene.Net?
- 11. ¿Cuáles son algunos ejemplos en los que los árboles de expresiones son útiles?
- 12. ¿Cuáles son algunos ejemplos de la vida real de patrones de diseño utilizados en el software
- 13. ¿Cuáles son algunos guiones de shell interesantes?
- 14. ¿Cuáles son algunos EWD imperdibles?
- 15. ¿Cuáles son algunos ejemplos de aplicaciones/bibliotecas de traducción automática que se están desarrollando actualmente?
- 16. ¿Cuáles son algunos principios básicos del diseño de interfaz?
- 17. ¿Cuáles son algunos ejemplos específicos de incompatibilidades regresivas en las versiones de Perl?
- 18. ¿Cuáles son algunos ejemplos de implementaciones de patrones de diseño usando JavaScript?
- 19. ¿Cuáles son algunos usos de los cierres para OOP?
- 20. ¿Cuáles son algunos buenos tutoriales de Wireshark?
- 21. ¿Cuáles son algunos inconvenientes del uso de CrossRider como plataforma para desarrollar extensiones para múltiples navegadores?
- 22. ¿Cuáles son algunos buenos ejemplos de JQuery que usa JSONP para hablar con .net?
- 23. ¿Cuáles son algunos buenos ejemplos donde se usa OUTER JOIN de SQL?
- 24. ¿Cuáles son algunos de los usos inteligentes de LINQ?
- 25. ¿Cuáles son algunos buenos libros UX?
- 26. ¿Cuáles son algunos malentendidos comunes sobre TDD?
- 27. ¿Cuáles son algunos recursos para aprender MSIL?
- 28. ¿Cuáles son algunos buenos perfiladores .NET?
- 29. ¿Cuáles son algunos casos de uso de cuando `delete` ha sido muy útil en JavaScript?
- 30. ¿Cuáles son las implicaciones de portabilidad del uso del NDK?
¿Has mirado la documentación/tutoriales: http://nokogiri.org/tutorials. Esta pregunta es un poco demasiado general, podría cerrarse;) –
Esta información se encuentra en los documentos de Nokogiri. Además, si mira a través de algunos de los enlaces relacionados al lado derecho de la página, encontrará ejemplos del uso de Nokogiri, junto con ejemplos de sus resultados. –