2013-05-02 15 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- script-linux) – user856358

+0

私はこのことを理解している限り、Webページからはスクリーンショットをとらず、開いているウィンドウからのみスクリーンショットをとっています。しかし私の計画は、私の自己によってURLを開かずにそれをすることです。 〜1000の画像を保存します。一部の書籍のみをカバーしています。 – danbruegge

答えて

6

場合によっては、ダウンロードを有効にするためにUser-Agentなどの追加のhttpヘッダーが必要になることがあります。 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のか、カールにHTTPヘッダを追加するためのparamsを見ることができます。

+0

大きな感謝、私はそれを知っている、それはユーザーエージェントでなければなりません。 :) – danbruegge

+0

しかし、キャプチャされたウェブサイトのイメージは生成されません。画像が壊れます。 – Pant

+0

@SarvagyaPantこのスクリプトを実行して、破損していないイメージがダウンロードされたことを確認しました。これで1分もかかりませんでした。あなたは、主張されていない主張をする前に、最小限の作業をしてください。 – tdelaney

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

最後の行は、イメージを現在のディレクトリに保存します。

希望これは私が困難なヘッドレスCentOSにVM上で一貫してスクリーンショットを撮るために幽霊を取得していた

+4

いいです。本当にうまく見えますが、私はQtをインストールしたくありません。 :/ – danbruegge

5

に役立ちます。 SeleniumPhantomJSが私の仕事:

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

これを実行すると、このエラーが発生します: 'トレースバック(最新の呼び出し最後): ファイル" C:\ bunker \ Lib \ site-packages \ custom_selenium.py "、行2、 br = webdriver。 phantomJSは() ファイル "C:\バンカーのLib \サイト - パッケージ\ \セレン\ webdriverを\ phantomjs \ webdriver.py"、49行、__init__ service_args = service_args、開き、log_path = service_log_path) TypeError例外で:__init __()です予期せぬキーワード引数 'log_path'' –

+0

うーん、わからないけど、webdriver.py __init__を編集してlog_path引数を削除するとどうなるのだろう? – billrichards

関連する問題