2013-05-02 45 views
8

我會從這個頁面截取截圖:http://books.google.de/books?id=gikDAAAAMBAJ&pg=PA1&img=1&w=2500或保存它輸出的圖像。從命令行或python網站截圖

但我找不到方法。有了wget/curl,我得到了一個「不可用的錯誤」,還有其他工具,比如webkit2png/wkhtmltoimage/wkhtmltopng。

是否有一個乾淨的方式來做到這一點用python或從命令行?

此致敬禮!

+0

[?我認爲這是在不同的線程回答](http://stackoverflow.com/questions/69645/take-a-screenshot-via-a-python-腳本-linux) – user856358 2013-05-02 18:03:41

+0

據我瞭解這一點,他們沒有從網頁截圖,只從一個打開的窗口。但是我的計劃是在沒有自己打開網址的情況下做到這一點。有〜1000圖像保存。只有一些書籍封面。 – danbruegge 2013-05-02 18:10:08

回答

6

有時你需要額外的http頭文件,例如User-Agent才能讓下載工作。在Python 2.7中,您可以:

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

或者您可以查看用於在wget或curl中添加http標頭的參數。

+0

非常感謝,我知道它必須是用戶代理。 :) – danbruegge 2013-05-13 19:01:50

+0

但它不會產生捕獲的網站的圖像。圖像將被打破。 – Pant 2016-01-18 09:17:11

+0

@SarvagyaPant我運行了這個腳本並驗證了一個未被破壞的圖像被下載。這花了我不到一分鐘的時間。您可以在做出未經證實的索賠之前儘量減少工作。 – tdelaney 2016-01-18 17:31:34

14

如果你喜歡,你可以使用ghost.py。 http://jeanphix.me/Ghost.py/

這是一個如何使用它的例子。

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

最後一行將圖像保存在當前目錄中。

希望這有助於

+4

不錯的一個。看起來真的很好,但我不想安裝Qt。 :/ – danbruegge 2013-05-13 19:02:51

5

我難以得到Ghost來採取截圖始終在無頭的Centos VM。 SeleniumPhantomJS爲我工作:

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

運行此操作時出現此錯誤:「Traceback(最近調用最後一次): 文件」C:\ bunker \ Lib \ site-packages \ custom_selenium.py「,第2行, br = webdriver。 PhantomJS() 文件「C:\ bunker \ Lib \ site-packages \ selenium \ webdriver \ phantomjs \ webdriver.py」,第49行,在__init__中 service_args = service_args,log_path = service_log_path) TypeError:__init __()意外的關鍵字參數'log_path'' – 2014-10-01 04:15:07

+0

嗯,不知道,但我想知道如果你編輯webdriver.py __init__並刪除log_path參數會發生什麼 – billrichards 2014-10-08 17:26:54