2

Web サイトを開く Python スクリプトを作成する必要があり、Web サイトが完全に開かれると、開いた Web サイトのスクリーンショットが取得されます。

私は次のように書いた:

import webbrowser
import wx

wx.App()
link = "http://stackoverflow.com/questions"
webbrowser.get('firefox %s').open_new_tab(link)
screen = wx.ScreenDC()
size = screen.GetSize()
bmp = wx.EmptyBitmap(size[0], size[1])
mem = wx.MemoryDC(bmp)
mem.Blit(0, 0, size[0], size[1], screen, 0, 0)
del mem
bmp.SaveFile('screenshot.png', wx.BITMAP_TYPE_PNG)

Firefoxで新しいタブを開くだけで、スクリーンショットは撮りません:(

ソリューションをクロスプラットフォームにしたい。助けてくれてありがとう:)

編集:

ここでの主な問題は、Web ページが完全に開かれる前にスクリプトが写真を撮ってはならないことです。その問題を解決する方法は?

4

3 に答える 3

2

オペレーティング システムごとに異なるソリューションが必要だと思います。現在使用sys.platformしているプラ​​ットフォームを確認するために使用します。残りは自分で把握する必要がありますが、簡単なインターネット検索で次のことが明らかになりました。

  • Linux システムでは、次の説明に従ってスクリーンショットを撮ることができます。

Python スクリプトを使用してスクリーンショットを撮ります。【リナックス】

  • Windows システムでは、次の回答に基づいてソリューションを構築できます。

WindowsでPythonを使用してスクリーンショットを撮る最速の方法

  • Mac システムでは、これは次のことに役立ちます。

Mac OS X の Python でスクリーンショットを撮る

于 2012-09-24T10:51:06.940 に答える
1

この質問によると、 ImageGrabを使用してスクリーンショットを撮ることができるはずです。ImageGrab は PIL を使用するため、これはクロスプラットフォームである必要があります。ここにあなたの方法を理解するためのサンプルコードがあります

お役に立てれば

于 2012-09-24T10:50:55.620 に答える
1

このソリューションはかなりクロスプラットフォームですが、メニュー/ツールバーなどを備えたデスクトップで開いているWebページを少し表示しようとしている場合...それはあなたが望むものではありません.

SeleniumHQを使用して、選択したブラウザーを自動化し、そのブラウザーにページをレンダリングさせ、レンダリングされたページの完全な画像を取得できます。つまり、画面に表示されるページの一部のスクリーンショットだけではありません。それに応じてそれを切り取ることができます。

于 2012-09-24T11:01:15.937 に答える