2013-05-02 15 views
8

Ich werde einen Screenshot von dieser Seite machen: http://books.google.de/books?id=gikDAAAAMBAJ&pg=PA1&img=1&w=2500 oder speichern Sie das Bild, das es ausgibt.Machen Sie einen Screenshot von einer Website von der Kommandozeile oder mit Python

Aber ich kann keinen Weg finden. Mit wget/curl bekomme ich einen "nicht verfügbaren Fehler" und auch mit anderen Tools wie webkit2png/wkhtmltoimage/wkhtmltopng.

Gibt es einen sauberen Weg, um es mit Python oder von der Kommandozeile aus zu tun?

Mit freundlichen Grüßen!

+0

[? Ich glaube, das in einem anderen Thread beantwortet wurde] (http://stackoverflow.com/questions/69645/take-a-screenshot-via-a-python- script-linux) – user856358

+0

Soweit ich das verstehe, nehmen sie keinen Screenshot von einer Webseite, nur von einem geöffneten Fenster. Aber mein Plan ist, es zu tun, ohne die URL selbst zu öffnen. Es ~ 1000 Bilder zu speichern. Nur Briefe von einigen Büchern. – danbruegge

Antwort

6

Manchmal benötigen Sie zusätzliche HTTP-Header wie den User-Agent, damit die Downloads funktionieren. In Python 2.7 können Sie:

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()) 

Oder Sie an dem params für das Hinzufügen von HTTP-Header in wget oder curl aussehen können.

+0

Vielen Dank, ich weiß es, es muss der User Agent sein. :) – danbruegge

+0

Es wird jedoch kein Bild der aufgenommenen Website erstellt. Das Bild wird unterbrochen. – Pant

+0

@SarvagyaPant Ich habe dieses Skript ausgeführt und überprüft, dass ein nicht beschädigtes Bild heruntergeladen wurde. Das dauerte weniger als eine Minute. Können Sie bitte ein Minimum an Arbeit machen, bevor Sie unbegründete Behauptungen machen? – tdelaney

14

Sie können Ghost.py verwenden, wenn Sie möchten. http://jeanphix.me/Ghost.py/

Hier ist ein Beispiel, wie man es benutzt.

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

Die letzte Zeile speichert das Bild in Ihrem aktuellen Verzeichnis.

hoffe, das hilft

+4

Nice one. Sieht wirklich gut aus, aber ich möchte Qt nicht installieren. :/ – danbruegge

5

ich Schwierigkeiten hatte, Geist immer einen Screenshot zu nehmen konsequent auf einer Maden Centos VM. Selenium und PhantomJS für mich gearbeitet:

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

Ich erhalte diesen Fehler, wenn ich folgendes ausführe: 'Traceback (letzter Anruf zuletzt): Datei" C: \ bunker \ Lib \ site-packages \ custom_selenium.py ", Zeile 2, in br = webdriver. PhantomJS() Datei "C: \ Bunker \ Lib \ Site-Pakete \ selen \ webdriver \ phantomjs \ webdriver.py", Zeile 49, in __init__ service_args = service_args, log_path = service_log_path) TypeError: __init __() hat ein unerwartetes Schlüsselwort argument 'log_path'' –

+0

hmm, nicht sicher, aber ich frage mich, was passiert, wenn Sie webdriver.py __init__ bearbeiten und das Argument log_path entfernen – billrichards

Verwandte Themen