Pythonを使用してFirefoxなどのWebブラウザーを制御することはできますか?
私は次のようなことをしたいと思います
等.
Selenium Remote Control は、あなたが求めているものに非常に近いプロジェクトです。付属のSelenium.webdriver
サブパッケージを使用してPythonで作業するのは非常に簡単です。かつては、これらは2つのプロジェクトでしたが、現在は統合されています。
シンプル!
$ pip install -U Selenium
>>> from Selenium import webdriver
>>> ff = webdriver.Firefox()
>>> ff.get("http://stackoverflow.com/q/3369073/395287")
>>> ff.save_screenshot("/absolute/path/to/webpage.png")
ブラウザと対話するための2つのモードがあるため、ドキュメントはSeleniumを少し混乱させる可能性があります。 webdriver
モードと同様に、「スタンドアロンSelenium Remote Controlサーバー」と通信する機能があります。そのアプローチは 公式ドキュメント で最初に文書化されているものですが、ここでは単純なタスクのためにwebdriver
を使用します。
スクリーンショットを撮る必要がある場合は、ページをレンダリングする必要があります。 (Timによって言及されたように)Seleniumを使用するか、 spynner を使用することをお勧めします。
以下は、spynnerを使用して必要なもののサンプルコードです。
import spynner
browser = spynner.Browser()
browser.load("http://stackoverflow.com/q/3369073/")
browser.snapshot().save('file.png')
browser.close()
wxWebConnect は、Gecko(Mozillaのレンダリングエンジン)を制御するためのwxWidgetsライブラリです。 wxPython と一緒に使用すると、Pythonで独自の(最小限の)Webブラウザーを記述して、クリックを制御できます。
Pythonでブラウザを制御するための優れた方法は、PyQt4.QtWebKit
。
実際に何を達成したいかによります。ユーザーの干渉なしにいくつかの自動処理を行う必要がある場合は、ブラウザ自体をロードせずに、GeckoやWebKitなどのブラウザの基盤となるエンジンを使用できます。 Pythonこれらのエンジンへのバインディングが利用可能です。
ブラウザ自体は、この種のAPIを外部プロセスに提供しません。 Firefoxの場合、拡張機能またはプラグインとして、ブラウザ側のコードをChromeに挿入する必要があります。
質問は少し古いですが、 pywebkitgtk への参照はありません。試してみてください。 spynnerpyqt.qtwebkit バインディングを使用して開発しましたが、pygtkを好むプログラマーはpywebketgtk(よりPython的な感じがする)を試してみてください。ただし、Qtバインディングはより完全であることに注意してください(または、少なくとも私が最後にチェックしたときです)。