¿Es posible escribir un script en Perl que abra diferentes URL y guarde una captura de pantalla de cada uno de ellos?¿Cómo puedo tomar capturas de pantalla de páginas web con Perl?
Respuesta
Puede usar WWW::Mechanize::Firefox para controlar una instancia de Firefox y volcar la página representada con $mech->content_as_png
.
Sin embargo, ten en cuenta que configurarlo puede ser todo un desafío.
Si todo funciona como se espera, puede simplemente usar un script como este para volcar imágenes de los sitios web deseados, pero debe iniciar Firefox y cambiar su tamaño manualmente al ancho deseado (la altura no importa, WWW :: Mechanize :: Firefox siempre volca toda la página).
use WWW::Mechanize::Firefox;
use Path::Class qw/file/;
my $mech = WWW::Mechanize::Firefox->new(
bufsize => 10_000_000, # PNGs might become huge
);
$mech->get('http://www.stackoverflow.com/');
my $fh = file('test.png')->open('> :raw');
print $fh $mech->content_as_png();</code></pre>
Escribí sobre este módulo para PerlTricks: [Controlando Firefox desde Perl] (http: // perltricks.com/article/138/2014/12/8/Controlling-Firefox-from-Perl) –
También es posible usar Win32::IE::Mechanize para representar la página web utilizando Internet Explorer, y luego Win32::Screenshot para capturar la página. Probablemente tengas que trabajar un poco para averiguar dónde tomar la captura de pantalla, pero eso no debería ser demasiado difícil.
Esta será una solución de plataforma de Windows, por supuesto, pero puede ser suficiente.
Parece que Win32 :: IE :: Mechanize ya no funciona con Activestate y/o Windows 7: https: //rt.cpan. org/Public/Dist/Display.html? Name = Win32-IE-Mechanize pero parece que todavía funciona http://search.cpan.org/dist/Win32-IEAutomation-0.5/lib/Win32/IEAutomation.pm –
Utilice el módulo WWW::Selenium
, para lo cual deberá tener una sesión Selenium Remote Control en funcionamiento.
El método capture_entire_page_screenshot()
debe ponerlo en funcionamiento.
De WWW::Selenium en CPAN:
$sel->capture_entire_page_screenshot($filename, $kwargs)
países de todo el contenido de la ventana de la lona actual en un archivo PNG ...
Un guión típico:
use strict;
use warnings;
use WWW::Selenium;
my $sel = WWW::Selenium->new(host => "localhost",
port => 4444,
browser => "*iexplore",
browser_url => "http://www.google.com",
);
$sel->start;
$sel->open("http://www.google.com");
$sel->capture_entire_page_screenshot("screenshot.png");
$sel->close;
Otro enfoque, que no requiere el uso de un navegador, es usar ImageMagick y HTML2PS para convertir la imagen. Tenga cuidado, sin embargo, esto no es trivial, y es casi imposible (la última vez que lo intenté) hacer que funcione correctamente en Windows.
Una vez instalado ImageMagick, el enfoque más simple es ejecutar una llamada al sistema convert
que se instala ImageMagick. Si desea un enfoque menos hackish, puede usar la API PerlMagickImageMagick.
Hay una excelente discusión sobre este enfoque que puede encontrar en PerlMonks.
Utilice una API de servicio web de terceros como http://webshotspro.com/ (capturas de pantalla) o http://www.thumbalizr.com/ (miniaturas).
- 1. ¿Cómo puedo tomar capturas de pantalla de páginas web usando Ruby y un servidor Unix?
- 2. C# biblioteca para tomar capturas de pantalla?
- 3. Cómo tomar capturas de pantalla rápidamente en Java?
- 4. ¿Cómo tomar capturas de pantalla del emulador usando Eclipse?
- 5. Cómo tomar capturas de pantalla en Android 2.3.3 sin raíz?
- 6. Tomar captura de pantalla de una página web (remota) programáticamente
- 7. ¿Cómo puedo tomar una captura de pantalla de un sitio web con .NET?
- 8. DrawToBitmap no tomar capturas de pantalla de todos los elementos
- 9. ¿Capturas de pantalla web generadas por servidor?
- 10. ¿Cómo puedo eliminar la pantalla con Perl?
- 11. Selenium se ejecuta como un servicio de Windows para tomar capturas de pantalla en los errores
- 12. Tome capturas de pantalla del control WebBrowser
- 13. beamer includegraphics con capturas de pantalla
- 14. ¿Cómo tomar una captura de pantalla de una página web?
- 15. capturas de pantalla de watir-webdriver black
- 16. ¿La mejor manera de tomar capturas de pantalla de pruebas en Selenium 2?
- 17. ¿Cómo tomar una captura de pantalla con unidad HTML?
- 18. ¿Puedo diseñar páginas web con Delphi?
- 19. ¿Cómo puedo tomar una captura de pantalla/imagen de un sitio web usando Python?
- 20. Ruta de capturas de pantalla en Android
- 21. ¿Cómo puedo usar Perl para tomar texto de una página web que se genera dinámicamente con JavaScript?
- 22. Creando capturas de pantalla del iPhone 5
- 23. ¿Cómo tomar la captura de pantalla programáticamente?
- 24. ¿Cómo puedo crear miniaturas de páginas web usando un motor de diseño en Perl?
- 25. ¿Automatiza las capturas de pantalla en el simulador de iPhone?
- 26. ¿Cuál es la mejor manera de tomar capturas de pantalla de una ventana con C++ en Windows?
- 27. Cómo hacer capturas de pantalla de maqueta sin VB
- 28. Cómo tomar una captura de pantalla con FireMonkey (multiplataformas)
- 29. Sin iPhone, ¿cómo tomar una captura de pantalla con XCode?
- 30. Capturas de pantalla de captura mediante programación en OSX
Eso sería difícil, Perl no puede renderizar una página web para guardar una captura de pantalla. –
Python o cualquier otro lenguaje de scripting? – fixxxer
@Murali: Eso no significa que no puedas usar Perl. Ver mi publicación a continuación. – Zaid