Anemone es una librería en ruby para extraer enlaces de sitios web (aka crawler), y poder realizar diversas acciones en ellos tan sólo indicando la URL principal. La descubrí a través del scanner whatweb.
Simplicidad y potencia, ejemplos.
Frontend de línea de comandos:
ecasbas@laptop:/var/lib/gems/1.8/bin$ ./anemone
Anemone is a web spider framework that can collect
useful information about pages it visits.
Usage:
anemone [arguments]
Commands:
count, cron, pagedepth, serialize, url-list
Anemone is a web spider framework that can collect
useful information about pages it visits.
Usage:
anemone
Commands:
count, cron, pagedepth, serialize, url-list
Ejemplo:
ecasbas@laptop:/#./anemone url-list http://www.wordpress.org
http://www.wordpress.org/
http://wordpress.org/
http://www.wordpress.org/extend/
http://wordpress.org/extend/
http://www.wordpress.org/about/
http://wordpress.org/about/
http://www.wordpress.org/showcase/
http://wordpress.org/showcase/
---------------cortado----------------
http://www.wordpress.org/
http://wordpress.org/
http://www.wordpress.org/extend/
http://wordpress.org/extend/
http://www.wordpress.org/about/
http://wordpress.org/about/
http://www.wordpress.org/showcase/
http://wordpress.org/showcase/
---------------cortado----------------
Ejemplo:
ecasbas@laptop:/#./anemone pagedepth http://www.wordpress.org
Depth: 0 Count: 1
Depth: 1 Count: 17
Depth: 2 Count: 6
Depth: 3 Count: 4
Depth: 0 Count: 1
Depth: 1 Count: 17
Depth: 2 Count: 6
Depth: 3 Count: 4
Más ejemplos en:
ecasbas@laptop:/var/lib/gems/1.8/bin$ ls /var/lib/gems/1.8/gems/anemone-0.3.0/lib/anemone/cli
count.rb cron.rb pagedepth.rb serialize.rb url_list.rb
count.rb cron.rb pagedepth.rb serialize.rb url_list.rb
Una característica que me interesaba, era poder indicar el nivel de crawling, por defecto no limita la profundidad del crawling. Para ello, anemone tiene la opción :depth_limit.
En el archivo:
/var/lib/gems/1.8/gems/anemone-0.3.0/lib/anemone/core.rb
Cambiamos:
# by default, don't limit the depth of the crawl
:depth_limit => false,
:depth_limit => false,
por
# by default, don't limit the depth of the crawl
:depth_limit => 1,
para que realice un crawling de nivel 1.
Uno de los pocos inconvenientes es que sólo consigue URLs del dominio solicitado, si este apunta a otro dominio diferente no lo sigue.
UPDATE (27-1-2010): Es posible que para URLs con HTTPS al ejecutarlas de un error similar a: /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- net/https (LoadError).
Eso es debido a que no tenemos las librerias ssl de ruby, para solucionarlo bastará con:
sudo apt-get install libopenssl-ruby
o algo similar si tu sistema usa otro gestor de paquetes.
UPDATE (27-1-2010): Es posible que para URLs con HTTPS al ejecutarlas de un error similar a: /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- net/https (LoadError).
Eso es debido a que no tenemos las librerias ssl de ruby, para solucionarlo bastará con:
sudo apt-get install libopenssl-ruby
o algo similar si tu sistema usa otro gestor de paquetes.
No hay comentarios:
Publicar un comentario
Trata a los demás como te gustaría ser tratado.