2011-11-02 8 views
5

Sto sviluppando un'applicazione java. Ho uno scenario per scattare una schermata dell'URL che arriva sul server.Libreria Java (o qualsiasi lingua) per il rendering offline di pagine Web?

C'è qualche libreria di browser Java (o qualsiasi lingua) per caricare pagine Web e ottenere alcuni screenshot della pagina caricata. Sarebbe bello se la lib permettesse il DOM trasversale.


Aggiornamento:

java(or any lang): Qualsiasi altra lingua non è un problema, ma la biblioteca dovrebbe cooperare con Java.

ho cercato di setupQt Jambi e speso un sacco di tempo su questo, ma il risultato è nulla. Se fornisci materiale concreto per configurare Jambi, sarebbe riconoscente.

Ho anche provato a spynner.py. La mia lingua madre è Java e ho pensato di poter usare spynner.py con Jython. Ma, PyQt non può essere utilizzato con Jython. Quindi, non mi aspetto alcuna risposta relativa a Python.


Fondamentalmente, ho bisogno di una libreria di fare: Colpo di schermo

  • Prendere.

  • Alcuni DOM che attraversano.

  • Alcuni Javascript Esecuzione.

  • e per ottenere il risultato del codice JS Eseguito.

Grazie.


Apprezzo tutte le risposte. Ho finito con phantomjs. Si adatta bene alle mie esigenze. È uno strumento da riga di comando.

+0

forse questo articolo potrebbe esserti d'aiuto http://stackoverflow.com/questions/60455/take-a-screenshot-of-a-webpage-with-javascript – andrew

+0

Penso che questo sia quello che stai cercando : http://stackoverflow.com/questions/943927/embed-a-web-browser-within-a-java-application –

+0

Qual è il problema con la mia risposta? –

risposta

3

in Java, si dovrebbe leggere i seguenti posti StackOverflow:

Programmatic web browser Java library

Take a screenshot of a webpage with JavaScript?

Embed a web browser within a java application


Perché si dice "o qualsiasi lang":

In Python, è necessario Spynner:

Spynner è un modulo web browser programmatico stateful per Python con supporto JavaScript/AJAX basata sul framework QtWebKit.

Secondo la documentazione, ecco un piccolo frammento:

import spynner 

browser = spynner.Browser() 
browser.load("http://www.wordreference.com") 
browser.runjs("console.log('I can run Javascript!')") 
browser.runjs("_jQuery('div').css('border', 'solid red')") # and jQuery! 
browser.select("#esen") 
browser.fill("input[name=enit]", "hola") 
browser.click("input[name=b]") 
browser.wait_page_load() 
print browser.url, len(browser.html) 
browser.close() 
7

Selenio/WebDriver offre tutte queste funzionalità.

Webdriver fornisce una semplice API che consente di "guidare" un'istanza del browser. Sono supportati molti browser.

Vedi qui per un semplice esempio:

http://seleniumhq.org/docs/03_webdriver.html#getting-started-with-selenium-webdriver

Traversal del DOM utilizzando il "con" localizzatori:

Buoni esempi qui: http://www.qaautomation.net/?p=388

driver.findElement(By.name("q")); 

Esecuzione di Javascript:

?

WebDriver driver; // Assigned elsewhere 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("return document.title"); 

Schermata di cattura:

http://seleniumhq.org/docs/04_webdriver_advanced.html#taking-a-screenshot

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
1

Se avete bisogno di uno screenshot, credo che la qualità del rendering è importante per voi. Abbiamo avuto uno scenario simile. Quello che abbiamo finito è quello di eseguire firefox in modalità headless, in realtà sfogliare la pagina web e ottenere una schermata in memoria. Non è banale, ma posso darti maggiori dettagli se volessi farlo.

+0

Con pagine alte o larghe che normalmente richiederebbero lo scorrimento, la schermata catturerebbe solo l'area che sarebbe visibile in una finestra del browser. – momomo

2

Questo sito fa il screenshot lavoro:

Tutorial: http://www.paulhammond.org/webkit2png/

Il programma: http://www.paulhammond.org/2009/03/webkit2png-0.5/webkit2png-0.5.txt

Potrebbe essere più facile? :)

Ci sono alcuni altri strumenti menzionati in quella pagina:

" Se si utilizza un Mac, ma non ti piace la linea di comando, allora si può provare Paparazzi o poco Snapper Se. uso linux si può essere più interessato a khtml2png, sceneggiatura screenshot di Mozilla di Matt Biddulph o uno script QT Webkit di Roland Tapken. "

si potrebbe usare Rhino, Gecko per il javascript esecuzione.

Per dom traversal ci sono molte opzioni, ma se si utilizza Rhino è possibile utilizzare jQuery per renderlo ancora più semplice!

Spero che funzioni per te!

Problemi correlati