Tras leer este magnífico tutorial sobre cómo publicar gemas con Hoe, he probado a crear mi primera gema en RubyForge.Se trata de MetaInspector, el corazón de Boris, la araña. MetaInspector facilita la extracción de datos de páginas web, encargándose de visitarla, descargar su HTML, y devolverte los datos de esa web: título, meta description y keywords, y enlaces.
Cómo instalar
sudo gem install metainspector
Ejemplo de uso
require 'metainspector'
datos = MetaInspector.scrape('http://www.google.com')
puts datos['title']
puts datos['description']
puts datos['keywords']
puts datos['links'].size
La web oficial de MetaInspector es:http://rubyforge.org/projects/metainspector/Se agradecerán vuestras pruebas y comentarios!
5 comments ↓
Hola Jaime, gracias por la gema, estaba pensando en hacer unas pruebas de scrapping y me viene genial. Solo quería aportar un pequeño comentario, Hoe tiene un accessor llamado “extra_deps” donde puedes añadir dependencias, hpricot en este caso, así si no tienes la gema te pregunta si deseas instalarla.
Saludos
Enhorabuena, Jaime.
Hola Jaime. Esta interesante tu gem, felicidades.
Tengo un par de sugerencias, a ver que te parecen:
* Como dice David, es buena idea que al crear la gema especifiques las dependencias.
* Por que no al inicio de tu clase requieres open-uri y hpricot?. De esa manera,
podemos usar solo un require para utilizar tu gema.
* if (!doc.at(’title’).nil?) es lo mismo que decir if doc.at(’title’)
* Si open-uri no puede abrir un URL, regresa una excepción, tal vez seria buena idea usar un rescue para avisar a los usuarios que el URI no existe, por ejemplo:
rescue SocketError
puts ‘The url provided does not exist or is temporarily unavailable’
Reescribi tu gem solo para ver de que otra manera podría lograrse el mismo resultado. No digo, para nada, que sea mejor, solo diferente. Si te interesa
escríbeme y te la mando para que la revises y me des tu opinión.
Me gustaría, por una vez, platicar en cristiano de Ruby.
Saludos,
Juan Alvarez
Gracias a todos por vuestros comentarios. Añadiré las dependencias como me decís y mejoraré los códigos…
Para esta primera versión sólo puse los códigos que usé en un tutorial, simplificados. Falta meterle rescues y timeouts.
Juan, te envío un e-mail para que me facilites tus modificaciones y veo de incorporarlas…
Acabo de lanzar la versión 1.0.2 con todos estos cambios que me proponéis. Gracias!
Leave a Comment