Quiero construir un sitio web simple que pueda descargar una página web www.example.com/index.html
y almacenar su instantánea en el servidor cuando el cliente lo solicite. Estoy pensando en usar el comando wget
para descargar la página web. ¿Podría Ruby on Rails ser capaz de manejar esta tarea?Usando wget vía Ruby on Rails
Respuesta
Sí.
Puede realizar shell commands in Ruby via back ticks, exec and system. Tenga en cuenta que cada uno vuelve algo ligeramente diferente:
volver garrapatas
wget http://www.yahoo.com
exec
:exec('wget http://www.yahoo.com')
system
:system('wget http://www.yahoo.com')
This blog post parece estar en la misma línea que lo que está tratando de hacer.
Además, hay varias bibliotecas de Ruby fabulosas para hacer esto:
- mechanize con mechanize download - echa un vistazo a este railscast
- httparty - simple envoltorio alrededor de una more-difficult-to-use http library. Una vez que obtenga el cuerpo de respuesta, deberá guardarlo en la base de datos o archivo.
- typhoeus - mecanismo simple para hacer las peticiones HTTP en paralelo, si necesita tal capacidad
Ello permitiría disponer de una interfaz de Rubí mucho mejor limpiador para hacer frente a los datos que regresa de las diversas solicitudes.
La mejor manera de probar todas estas opciones es utilizar la consola de Rails. Ir al directorio raíz de la aplicación Rails y tipo:
rails c
Una vez en la consola, puede emular las llamadas a servidores reales.
Al ejecutar wget
en su consola se soltarán los archivos en el directorio raíz de Rails, que no es lo que desea. tmp
es un directorio estándar para tales cosas. Puede generar dinámicamente el camino basado en la URL de esta manera:
# tmp directory
path = Rails.root.join('tmp')
# create sub-directory as md5 hash based on URL
sub_dir = Digest::MD5.hexdigest(url)
# append sub_dir on the path
destination_path = path.join(sub_dir)
system("wget -P #{destination_path} #{url}")
Asegúrese de incluir también las opciones de this post
¡Gracias! Déjame tomar un tiempo para revisar tu respuesta. Por cierto, una vez que ejecuto 'wget' usando' exec'/'system', ¿cómo puedo especificar dónde en el servidor colocar los archivos? –
[La publicación del blog] (http://blogforever.eu/blog/2011/05/21/creating-a-snapshot-of-a-blog-post-using-wget/) que usted mencionó es absolutamente increíble. Esto debería reemplazar a la mitad de las gemas de rubí del analizador de páginas estáticas que están obsoletas. –
- 1. Usando wget vía Python
- 2. Usando Photobucket api con Ruby on Rails
- 3. Ruby on Rails enviar
- 4. Ruby vs. Ruby on Rails
- 5. Ruby on Rails Switch
- 6. Docsplit Ruby on Rails
- 7. Ruby on Rails: descargable
- 8. Ruby on Rails will_paginate
- 9. Ruby on Rails Rake Error
- 10. Columna decimal Ruby on Rails
- 11. Ruby on Rails: Running Tests
- 12. Cómo dominar Ruby on Rails
- 13. Busting Ruby on Rails Myths
- 14. Ruby on Rails: Hello World
- 15. Intellisense para Ruby, Ruby on Rails, Python
- 16. Perfilando una aplicación ruby / ruby on rails
- 17. Antipatterns con Ruby on Rails
- 18. Ruby on rails y Node.js
- 19. Ruby on rails application root
- 20. Ruby on rails connection problem
- 21. Ruby on Rails: formulario select
- 22. Ruby on Rails ActiveRecord: pluralization
- 23. Ruby on Rails asociación polimórfica
- 24. Usos de Ruby on Rails
- 25. link_to con Ruby on Rails
- 26. Ruby on Rails API Tutorial
- 27. Ruby on Rails en IIS?
- 28. mejor ruby on rails cms
- 29. Ruby on Rails I18n interpolation
- 30. Ruby on Rails Debug Pregunta
con captura de imagen, qué se refiere una imagen, o el HTML subyacente? –
Ah, me refiero tanto al html subyacente como a las imágenes/hojas de estilo asociadas a esa página (es decir, utilizando la opción -p de wget). –