2008-09-23 5 views
7

Ein Problem, mit dem ich mich beschäftigt habe, ist ein Dienst, bei dem mein Server einen Screenshot einer Webseite an einer bestimmten URL erstellen muss. Das Problem ist, dass ich keine Ahnung habe, wie ich das erreichen würde. Ich benutze meistens einen LAMP-Software-Stack, daher wären die Antworten, die mir dabei gegeben wurden, am hilfreichsten. Die grundlegenden Anforderungen sind wiederum: Gegeben eine URL, der Server muss eine Bilddatei der gerenderten Webseite an dieser URL erzeugen. Danke im Voraus!Server Generierte Web Screenshots?

+1

keine Sorge TraumaPony, mein Web-Service hat nichts mit Pop-up-Bildern zu tun, die über Links schweben, während Sie versuchen, einen Artikel zu lesen :) –

Antwort

2

Sie müssen den Server tatsächlich starten den fraglichen Webbrowser starten und einen Screenshot der Anwendung mit den entsprechenden Bibliotheken erstellen. Apache wird die Seite nicht für Sie rendern, so dass Sie über Software verfügen müssen.

+0

Recht. Ein paar Ideen, die ich hatte, sollten tatsächlich automatisch einen Screenshot von der Desktop-Umgebung sammeln oder irgendwie die Gecko-Engine verwenden, um eine gerenderte Version der Seite zu erstellen, aus der ich ein Bild erstellen könnte. Hmm .... –

2

Ja, das ist, was benötigt wird. Ich mache das in asp.net und ich erstelle tatsächlich ein WebBrowser-Objekt, das in den .Net-Framework-Klassenbibliotheken verfügbar ist, um den Screenshot zu erzeugen.

6

Sie könnten auch einen Blick auf webkit werfen, es ist bekannt für einfacher zu einbetten (von Adobe für AIR, von Google für Chrome, von Apple für das iPhone verwendet ...) dann andere Rendering-Engines. Dies könnte ein wenig mehr Aufwand für die Einrichtung erfordern, aber es wäre viel stabiler als einige Hacks, die einen Webbrowser starteten und einen Screenshot machten.

+0

Ich mag dein Denken –

+3

Heutzutage gibt es [PhantomJS] (http://www.phantomjs.org/), ein kopfloses WebKit. – jholster

+0

@jholster Danke für diesen Kommentar! PhantomJS sieht genau so aus, wie ich es gesucht habe! – ahans

6

IF des Server ist ein Mac, dann empfehle ich webkit2png, die ein kurzes Python-Programm, die WebKit Objective-C-API nutzt eine URL zu machen. Persönlich verwende ich es in Kombination mit WWW::Mechanize, um meine Entwicklungsseite zu gehen und Screenshots von jeder Seite zu machen - nützlich zum Testen der Funktionalität, zum Anzeigen von Clients und zum Halten von Screenshots auf dem neuesten Stand. Der resultierende Screenshot ist perfekt, aber manchmal sehr groß für lange, scrollende Seiten.

IF Ihr Server ein nicht-bare-bones Linux Distribution mit KDE installiert ist, dann könnten Sie khtml2png versuchen. Ich habe das selbst nicht versucht, aber ich habe es auf der webkit2png-Seite erwähnt.

+0

Irgendwie glaube ich nicht, dass es so viele Mac-Server gibt, aber khtml2png sieht auch gut aus (wenn nicht so poliert) – davr

2

Ich verwende den http://webthumb.bluga.net Service für die Thumbnail-Generierung. Robust, leistungsstark, einfach zu bedienen und zu sehr günstigen Preisen. Ich habe eine Website mit hoher Traffic-Produktion mit diesem Service und es funktioniert sehr gut. Angesichts der Schwierigkeit, einen robusten Web-Screenshot-Service zu erstellen, ist es schön, dass jemand anderes die harte Arbeit macht.

+1

aber es erfasst nicht eine ganze Website, es ist nur Thumbnails es. – PabloC

0

Eine unfreie Lösung für Java ist WebRenderer. Interessantes Feature: Es kann Safari, IE oder Firefox Browser beim Rendern emulieren. Sie haben eine Desktop-Version und eine Headless-Server-Version. Außerdem haben sie einen Beispielcode, der zeigt, wie man ein Screenshot einer Webseite rendert.

0

virtuellen Framebuffer-X-Server

würde ich eher XVFB (virtuellen Framebuffer-X-Server) empfehlen ist die beste Lösung für Screenshots eines Headless-Server nehmen. Virtueller Framebuffer X-Server xvfb stellt einen X-Server zur Verfügung, der auf Rechnern ohne Bildschirmhardware und ohne physische Eingabegeräte ausgeführt werden kann. Ich verwende das auf meinem Server, um URLs zu testen und den Screenshot zu erstellen. Wir verwenden Ubuntu & XVFB + FIREFOX. Es funktioniert gut. Ändern Sie nach Ihren Bedürfnissen. Werfen Sie einen Blick auf diese Artikel. Es könnte für Sie voll sein.

http://www.semicomplete.com/blog/geekery/xvfb-firefox.html

http://linux.about.com/cs/linux101/g/xvfb.htm

http://www.xfree86.org/4.0.1/Xvfb.1.html

3

PhantomJS ist eine Maden (Commandline) WebKit-basierten Browser, der leicht scripted sein kann, einen Screenshot der Webseite zu speichern.