2009-08-10 22 views
9

Nuestro paquete de análisis web incluye información detallada sobre la actividad del usuario dentro de una página, y mostramos (clic/desplazamiento/interacción) visualizaciones en una superposición encima de la página web. Actualmente, este es un IFrame que contiene una representación en vivo de la página.Cómo tomar una captura de pantalla de la página HTML procesada

Dado que las páginas cambian con el tiempo, los datos anteriores ya no se corresponden con el diseño actual de la página. Nos gustaría ejecutar una araña para ocasionalmente tomar instantáneas de las páginas, lo que nos permite mantener un registro de las interacciones con varias versiones de la página.

Tenemos una implementación de trabajo de esto (Linux), pero el proceso de instantánea es un espantoso hack de Python/JavaScript/HTML que abre una ventana de Firefox, captura de pantalla y desplazamiento y fusión y guardado en un archivo. Esto requiere que instalemos la pila X en nuestros servidores normalmente sin cabeza, y tarda más de un minuto por página.

Preferiríamos una implementación sin cabezales con un rendimiento más cercano al tiempo de renderización en un navegador web normal, pero no hemos encontrado nada.

Hay un cierto movimiento hacia la creación de algo usando la fuente de Mozilla como punto de partida, pero eso me parece excesivo, así como una pesadilla de mantenimiento si intentamos mantenerlo actualizado.

Sugerencias?

+0

utilizo [wkhtmltopdf] (http://code.google.com/p/wkhtmltopdf/) para esto. Necesita un servidor X, pero Xvfb es suficiente, por lo que técnicamente no tiene cabeza. – jrockway

Respuesta

1

An article on Digital Inspiration apunta a CutyCapt que es multiplataforma y utiliza el motor de representación Webkit así como IECapt que utiliza el motor de representación IE actual y requiere Windows, natch. Nada fuera de mi cabeza que usa Gecko, el motor de renderizado de Firefox.

Sin embargo, dudo que pueda alejarse de X. Como CutyCapt requiere Qt, requiere X o una instalación de Windows. Y, de forma similar, IECapt requerirá Windows (o Wine si quiere intentar ejecutarlo bajo Linux, y luego vuelve a necesitar X). Dudo que pueda encontrar un motor de renderizado que no requiera Qt, Gtk, GDI o Cocoa, y por lo tanto requiere una instalación completa de bibliotecas de visualización.

+0

Funciona con Xvfb. – jrockway

+0

@jrockway: No estoy seguro de cuál es tu antecedente, pero creo que podrías estar perdiendo el sentido. La objeción aquí no es el hecho de que se necesita una pantalla física (no lo es), sino más que una gran cantidad de bibliotecas adicionales instaladas que admiten interfaces gráficas en una máquina que, de lo contrario, se usa solo para servicios de terminal. –

0

¿Por qué no almacena el código HTML que se envía al cliente? Luego puede usar eso para volver a mostrar en un navegador web como una página para mostrar su aspecto.

Usando sus datos de analítica web sobre las acciones de uso, podrían usar eso para predefinir los cuadros combinados, campos, etc. a los valores que el cliente hubiera tenido, incluso cambiar el CSS en botones, etc., para marcarlos como empujados.

Como beneficio, no necesita la pila X, no necesita rastrear o almacenar imágenes.

EDITAR (Re Andrew Moore):

Aquí es donde se almacenan los actuales CSS/images bajo un número de versión. Coloque un número de versión fácil de analizar en un comentario en el HTML. Si cambia sus CSS/imágenes y usa los nombres existentes, incremente el número de versión en la salida HTML enviada.

El sistema que almacena el HTML sabrá que necesita tomar una nueva copia y almacenar bajo un nuevo número. Al volver a mostrar, simplemente usa el número de versión para determinar qué CSS/imagen se debe usar.


Actualmente contamos con un sistema de aquí que utiliza un sistema muy similar para que podamos realizar un seguimiento de las acciones de los usuarios y proporcionar un mejor apoyo cuando llaman a nuestra mesa de ayuda, ya que pueden abrir la sesión de usuarios y sigue lo que hicieron, incluso algo-en vivo

incluso puede codificarlo para autocensurar campos confidenciales cuando se almacena.

+0

Eso funciona hasta el día en que cambian drásticamente su diseño y sus css/imágenes. –

+0

Considerando su edición. Ahora tiene el problema adicional de analizar los archivos y corregir las rutas relativas/absolutas para que se muestren correctamente. La ruta de la imagen es simplemente la más fácil. –

+0

Eso es correcto, pero no es tan difícil. No veo cómo renderizar una página y tomar una imagen de, es realmente la manera más fácil. En el peor de los casos, podría almacenar todo el CSS con cada sesión de usuario, y solo asegurarse de que si cambia una imagen, también cambie su nombre. O simplemente asegúrese de usar todo a través de una ruta relativa en primer lugar, lo que significa que no necesita cambiar la ruta en el HTML en absoluto si la sirve correctamente. Lo hicimos aquí y aparte de algunos problemas iniciales de DB, funciona como un encanto. –

0

dependiendo de las características específicas de sus necesidades, ¿tal vez podría salirse con la suya con uno de los muchos servicios de miniaturas de páginas web gratuitas? snapcasa, por ejemplo, le permite generar miles por mes/sin cargo, sin publicidad .. (nunca utilizado, simplemente Google 'servicio gratuito de miniaturas') para encontrar esto.

sólo un thot

Cuestiones relacionadas