2013-05-02 9 views
8

prenderò uno screenshot da questa pagina: http://books.google.de/books?id=gikDAAAAMBAJ&pg=PA1&img=1&w=2500 o salverò l'immagine che emette.Scatta uno screenshot da un sito web da riga di comando o con python

Ma non riesco a trovare un modo. Con wget/curl ottengo un "errore non disponibile" e anche con altri strumenti come webkit2png/wkhtmltoimage/wkhtmltopng.

C'è un modo pulito per farlo con python o dalla riga di comando?

Cordiali saluti!

+0

[? Credo che questo è stato risposto in un thread diverso] (http://stackoverflow.com/questions/69645/take-a-screenshot-via-a-python- script-linux) – user856358

+0

Per quanto ho capito, non prendono screenshot da una pagina web, solo da una finestra aperta. Ma il mio piano è di farlo senza aprire l'url da parte mia. Ci sono ~ 1000 immagini da salvare. Copre solo da alcuni libri. – danbruegge

risposta

6

A volte è necessario disporre di intestazioni http aggiuntive come User-Agent per scaricare i download sul posto di lavoro. In Python 2.7, è possibile:

import urllib2 
request = urllib2.Request(
    r'http://books.google.de/books?id=gikDAAAAMBAJ&pg=PA1&img=1&w=2500', 
    headers={'User-Agent':'Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 firefox/2.0.0.11'}) 
page = urllib2.urlopen(request) 

with open('somefile.png','wb') as f: 
    f.write(page.read()) 

Oppure si può guardare ai params per l'aggiunta di intestazioni HTTP in wget o curl.

+0

Grazie mille, lo so, deve essere l'interprete. :) – danbruegge

+0

Tuttavia non produrrà un'immagine del sito Web catturato. L'immagine sarà rotta. – Pant

+0

@SarvagyaPant Ho eseguito questo script e verificato che venga scaricata un'immagine non rotta. Mi ci è voluto meno di un minuto. Puoi per favore inserire un minimo di lavoro prima di fare affermazioni non comprovate. – tdelaney

14

È possibile utilizzare ghost.py se lo si desidera. http://jeanphix.me/Ghost.py/

Ecco un esempio di come utilizzarlo.

from ghost import Ghost 
ghost = Ghost(wait_timeout=4) 
ghost.open('http://www.google.com') 
ghost.capture_to('screen_shot.png') 

L'ultima riga salva l'immagine nella directory corrente.

Spero che questo aiuti

+4

Bello. Sembra davvero buono, ma non voglio installare Qt. :/ – danbruegge

5

ho avuto difficoltà a portare Ghost per prendere uno screenshot in modo coerente su un senza testa Centos VM. Selenium e PhantomJS ha lavorato per me:

from selenium import webdriver 
br = webdriver.PhantomJS() 
br.get('http://www.stackoverflow.com') 
br.save_screenshot('screenshot.png') 
br.quit 
+0

Viene visualizzato questo errore durante l'esecuzione: 'Traceback (ultima chiamata ultima): File" C: \ bunker \ Lib \ site-packages \ custom_selenium.py ", riga 2, in br = webdriver. PhantomJS() File "C: \ bunker \ Lib \ site-packages \ selenium \ webdriver \ phantomjs \ webdriver.py", riga 49, in __init__ service_args = service_args, log_path = service_log_path) TypeError: __init __() ottenuto un argomento di parole chiave non previsto 'log_path'' –

+0

hmm, non sono sicuro, ma mi chiedo cosa succede se modifichi webdriver.py __init__ e rimuovi l'argomento log_path – billrichards

Problemi correlati