¿Hay alguna forma de tomar una captura de pantalla de un sitio web en PHP y luego guardarlo en un archivo?
php
screenshot
Paolo Forgia
fuente
fuente
Respuestas:
ÚLTIMA EDICIÓN : después de 7 años todavía estoy recibiendo votos positivos para esta respuesta, pero supongo que esta es ahora mucho más precisa.
Claro que puedes, pero necesitarás renderizar la página con algo. Si realmente desea usar solo php, le sugiero HTMLTOPS , que representa la página y la muestra en un archivo ps (ghostscript), luego, conviértalo en un .jpg, .png, .pdf ... puede ser un poco más lento con páginas complejas (y no admiten todo el CSS).
De lo contrario, puede usar wkhtmltopdf para generar una página html en pdf, jpg, lo que sea ... Acepte CSS2.0, use el webkit (envoltorio de safari) para renderizar la página ... así que debería estar bien. También debes instalarlo en tu servidor.
ACTUALIZAR Ahora, con la nueva característica HTML5 y JS, también es posible renderizar la página en un objeto de lienzo usando JavaScript. Aquí una buena biblioteca para hacer eso: Html2Canvas y aquí hay una implementación del mismo autor para obtener comentarios como G +. Una vez que haya procesado el dom en el lienzo, puede enviarlo al servidor a través de ajax y guardarlo como jpg.
EDITAR : puede usar la herramienta imagemagick para transformar pdf a png. Mi versión de wkhtmltopdf no admite imágenes. Por ej
convert html.pdf -append html.png
.EDITAR : Este pequeño script de shell ofrece un ejemplo de uso simple pero funcional en Linux con php5-cli y las herramientas mencionadas anteriormente.
EDITAR : ahora me di cuenta de que el equipo de wkhtmltopdf está trabajando en otro proyecto: wkhtmltoimage, que le da el jpg directamente
fuente
¡Desde PHP 5.2.2 es posible capturar un sitio web con PHP únicamente !
Editar: ¡ Tenga en cuenta que estas funciones están disponibles SOLO en sistemas Windows!
fuente
Si no desea utilizar herramientas de terceros, he encontrado una solución simple que está utilizando la API de Google Page Insight .
Solo necesito llamarlo es api con params
screenshot=true
.Para la vista de sitio móvil pase
&strategy=mobile
en parámetros,DEMO .
fuente
Puede usar un navegador simple sin cabeza como PhantomJS para capturar la página.
También puedes usar PhantomJS con PHP.
Echa un vistazo a este pequeño script PHP que hace esto. Echa un vistazo aquí https://github.com/microweber/screen
Y aquí está la API- http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-using-php
fuente
Esto debería ser bueno para ti:
https://wkhtmltopdf.org/
¡Asegúrese de descargar la distribución wkhtmltoimage!
fuente
Si. Necesitarás algunas cosas aunque:
Ver khtmld (aemon) en * nx. Consulte Url2Jpg para Windows, pero como es la aplicación dotNet, también debe consultar Url2Bmp
Ambas son herramientas de consola que puede utilizar desde su aplicación web para obtener la captura de pantalla.
También hay servicios web que lo ofrecen. Mira esto por ejemplo.
Editar:
Este enlace es útil para.
fuente
Está en Python, pero repasando la documentación y el código puede ver exactamente cómo se hace. Si puede ejecutar python, entonces es una solución preparada para usted:
http://browsershots.org/
Tenga en cuenta que todo puede ejecutarse en una máquina para una plataforma, o una máquina con máquinas virtuales que ejecutan las otras plataformas.
Gratis, de código abierto, desplácese hasta la parte inferior de la página para obtener enlaces a la documentación, el código fuente y otra información.
fuente
Sí lo es. Si solo necesita una imagen de URL intente esto
Pase la url como argumento y obtendrá la imagen para obtener más detalles, consulte este enlace http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
fuente
Bueno, PhantomJS es un navegador que se puede poner fácilmente en un servidor e integrarlo en php. Puede encontrar el código en WDudes. Han incluido muchas más funciones, como especificar el tamaño de la imagen, el caché, descargar como archivo o mostrar en img src, etc.
Parámetros de URL
Ancho y alto: screenshot.php? Url = google.com & w = 1000 & h = 800
Con recorte: screenshot.php? Url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600
Deshabilite el caché y cargue un nuevo screesnhot:
screenshot.php? Url = google.com & cache = 0
Para descargar la imagen: screenshot.php? Url = google.com & download = true
Puedes ver el tutorial aquí: Captura de pantalla de un sitio web usando PHP sin API
fuente
cutycapt guarda páginas web en la mayoría de los formatos de imagen (jpg, png ..) descárguelo de su sináptica, funciona mucho mejor que wkhtmltopdf
fuente
Siempre uso la pantalla de microweber para capturar capturas de pantalla de cualquier página web. Aquí podemos encontrar un tutorial bien escrito . Esto es más fácil y no debería tomar más de 3 minutos para aprender.
fuente
Finalmente lo configuré usando microweber / screen como lo propuso @boksiora.
Inicialmente cuando probé el enlace mencionado aquí, lo que obtuve:
Estoy en Linux Entonces, si desea ejecutarlo, puede ajustar mi paso a su entorno.
Aquí están los pasos que hice en mi shell en la
DOCUMENT_ROOT
carpeta:Apunte su navegador a
screen/demo/shot.php?url=google.com
. Cuando vea la captura de pantalla , habrá terminado. La discusión para una configuración más avanzada está disponible aquí y aquí .fuente
Hay muchos proyectos de código abierto que pueden generar capturas de pantalla. Por ejemplo PhantomJS, webkit2png, etc.
El gran problema con estos proyectos es que se basan en tecnología de navegador más antigua y tienen problemas para representar muchos sitios, especialmente sitios que usan fuentes web, flexbox, svg y varias otras adiciones a las especificaciones HTML5 y CSS en los últimos meses / años.
He probado algunos de los servicios de terceros, y la mayoría se basan en PhantomJS, lo que significa que también producen capturas de pantalla de baja calidad. El mejor servicio de terceros para generar capturas de pantalla del sitio web es urlbox.io . Es un servicio pago, aunque hay una prueba gratuita de 7 días para probarlo sin comprometerse con ningún plan pago.
Aquí hay un enlace a la documentación , y a continuación hay pasos simples para que funcione en PHP con Composer.
Por ejemplo, aquí hay una captura de pantalla de altura completa de esta misma página:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F757675%2Fwebsite-screenshots-using-php% 2F43652083% 2343652083 & full_page = true
fuente
Hay muchas opciones y todas tienen sus ventajas y desventajas. Aquí hay una lista de opciones ordenadas por dificultad de implementación.
Opción 1: usar una API (la más fácil)
Pros
Contras
Opción 2: use una de las muchas bibliotecas disponibles
Pros
Contras
Opción 3: usar PhantomJs y tal vez una biblioteca de contenedor
Pros
Contras
Opción 4: use Chrome Headless y tal vez una biblioteca de contenedor
Pros
Contras
Descargo de responsabilidad: soy el fundador de ApiFlash. Hice mi mejor esfuerzo para proporcionar una respuesta honesta y útil.
fuente
Estoy en Windows, así que pude usar la función imagegrabwindow después de leer el consejo aquí de stephan. Agregué recortar (para eliminar el encabezado del navegador, las barras de desplazamiento, etc.) y cambiar el tamaño para obtener una imagen final. Aquí está mi código . Espero que ayude a alguien.
fuente
webkit2html funciona en Mac OS X y Linux, es bastante simple de instalar y usar. Mira este tutorial .
Para Windows, puede usar CutyCapt , que tiene una funcionalidad similar.
fuente
Yo solía bluga . La API le permite tomar 100 instantáneas al mes sin pagar, pero a veces utiliza más de 1 crédito para una sola página. Acabo de terminar de actualizar un módulo de drupal, Bluga WebThumbs a drupal 7, que le permite imprimir una miniatura en una plantilla o filtro de entrada.
La principal ventaja de usar esta API es que le permite especificar las dimensiones del navegador en caso de que use CSS adaptable, por lo que lo estoy usando para obtener representaciones para el diseño móvil y de la tableta, así como para el habitual.
Hay clientes api para los siguientes idiomas:
PHP , Python , Ruby , Java , .Net C # , Perl y Bash (el script de shell parece que requiere perl)
fuente
Todo depende de cómo desee tomar la captura de pantalla.
Puede hacerlo a través de PHP, utilizando un servicio web para obtener la imagen.
grabz.it tiene un servicio web para hacer esto, aquí hay un artículo que muestra un ejemplo simple de uso del servicio.
http://www.phpbuilder.com/articles/news-reviews/miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html
fuente
Puede usar la solución https://grabz.it .
Tiene una API PHP que es muy flexible y se puede llamar de diferentes maneras, como desde un cronjob o una página web PHP.
Para implementarlo, primero deberá obtener una clave y un secreto de la aplicación y descargar el SDK (gratuito).
Y un ejemplo de implementación. Primero de todo inicialización:
Y ejemplo de captura de pantalla:
El siguiente es el ahorro. Puede usar uno de los dos métodos de guardado,
Save
si el controlador de devolución de llamada de acceso público está disponible ySaveTo
si no. Consulte la documentación para más detalles .fuente
Escribí una aplicación rápida y sucia el otro día para hacer esto usando la API de Google. Sin duda, posibilidades de mejora ...
Encuéntrelo aquí con una demostración en vivo y un código .
No publiqué el código aquí simplemente porque sigo refinándolo y con suerte, cuando tenga tiempo, conviértalo en una clase adecuada.
fuente
Solía page2images . Está desarrollado en base al cutycapt que es realmente rápido y estable. Si no desea pasar demasiado tiempo en el rendimiento y la configuración, debe usarlo. Si va a su sitio web, puede encontrar más detalles y ejemplos de código PHP.
fuente
Después de mucho navegar en la web, encontré esto.
PPTRAAS > Una herramienta gratuita para capturar capturas de pantalla pasando su URL como parámetro
Proporcionan múltiples opciones simplemente presionando su URL.
Obtener captura de pantalla de página completa
https://pptraas.com/screenshot?url= {USTED URL AQUÍ}
Obtener captura de pantalla de página de tamaño específico
https://pptraas.com/screenshot?url= {YOU URL AQUÍ} & size = 400,400
Incluso se puede convertir la página a pdf
https://pptraas.com/pdf?url= {USTED URL AQUÍ}
fuente
Podrías hacer 2 cosas.
Usar titiritero
Puede usar el paquete PHP Puppeteer para activar un navegador y tomar una captura de pantalla.
Use una API
Hay muchas API de captura de pantalla. Podrías mirar ScreenshotAPI.net por ejemplo. (Descargo de responsabilidad Soy el creador de esa API)
fuente
No directamente. El software como Selenium tiene características como esta y puede ser controlado por PHP, pero tiene otras dependencias (como ejecutar su servidor basado en Java en la computadora con el navegador que desea capturar)
fuente
puedes usar cutycapt.
kwhtml está en desuso y muestra la página como un navegador antiguo.
fuente
He encontrado que esta es la mejor y más fácil herramienta: ScreenShotMachine . Es un servicio pago, pero obtienes 100 capturas de pantalla gratis y puedes comprar otras 2,000 por (aproximadamente) $ 20, por lo que es un buen negocio. Tiene un uso muy simple, solo usa una URL, así que escribí este pequeño script para guardar un archivo basado en él:
Tienen una muy buena documentación aquí , por lo que definitivamente deberías echar un vistazo.
fuente