2010-07-27 8 views
10

Ok, al momento non posso davvero permettermi di pagare alcun servizio. Voglio essere in grado di prendere screenshot usando il mio server in affitto, che è basato su Linux, e li metto sullo schermo.Scattare lo screenshot del sito, lato server, su un server noleggiato Linux, gratis

So che ci sono molti servizi che fanno questo, ma di solito hanno limiti o filigrane, oppure devi aspettare che il tuo screenshot sia preso dalla coda.

C'è un modo per prendere solo gli screenshot e magari successivamente memorizzarli in cache o altro? Sto usando PHP, ma non sono limitato ad esso; Sono solo su un server Linux, quindi le funzioni appropriate di GD non funzionerebbero. Aiuto! :)

risposta

10

PhantomJs is the solution

if(phantom.state.length === 0){ 
    phantom.state = '0_home'; 
    phantom.open('http://www.mini.de'); 
} 
else if(phantom.state === '0_home'){ 
    phantom.viewportSize = {width: 800, height: 600}; 
    phantom.sleep(2000); 
    phantom.render('home.png'); 
    phantom.exit(0); 
} 
+2

Link molto bello, grazie per aver condiviso! – Kirzilla

+0

che dire di siti web in cinese e altri script di Roman. – Vish

+1

Penso che i phantomjs non dovrebbero funzionare. Se webkit può renderizzare la pagina, phantomjs dovrebbe essere in grado di fare uno screenshot. – cromulus

9

http://cutycapt.sourceforge.net/

CutyCapt è una piccola utility a riga di comando multi-piattaforma per catturare il rendering di una pagina web da parte di WebKit in una varietà di vettoriali e bitmap formati, tra cui SVG, PDF, PS, PNG, JPEG, TIFF, GIF e BMP.

Non c'è PHP-api, ma si può sempre utilizzare attraverso exec funzioni di PHP.

+0

Penso che sarei in grado di eseguirlo con un server ospitato? – casraf

+0

Non la pensi così? – Kirzilla

+0

[Timthumb] (http://code.google.com/p/timthumb/) fornisce l'accesso a cutycapt, che può aiutare con il problema "no PHP-api". – Nick

5

Ecco uno script utilizzando meglio phantomJS 1,5

var page = require('webpage').create(); 

page.open('http://www.google.com', function() { 

    page.viewportSize = {width: 1024, height: 768}; 
    page.render('screenshot.png'); 
    phantom.exit(); 
}); 
+2

Brad: potrebbe essere necessario PhantomJS 1.5. In quella versione questo ha funzionato bene con me. – Husky

+0

Hai ragione .. Funzionerà solo sulla versione 1.5 Grazie per il chiarimento. – Brad

1

Una delle soluzioni nel 2017:

https://github.com/GoogleChrome/puppeteer

esempio:

const puppeteer = require('puppeteer'); 

(async() => { 

const browser = await puppeteer.launch(); 
const page = await browser.newPage(); 
await page.goto('https://example.com'); 
await page.screenshot({path: 'example.png'}); 

browser.close(); 
})();