web-dev-qa-db-ja.com

Pythonを使用してブラウザを制御していますか?

Pythonを使用してFirefoxなどのWebブラウザーを制御することはできますか?

私は次のようなことをしたいと思います

  • ブラウザを起動します
  • uRLを強制的にクリックする
  • スクリーンショットを撮る

等.

21
demos

Selenium Remote Control は、あなたが求めているものに非常に近いプロジェクトです。付属のSelenium.webdriverサブパッケージを使用してPythonで作業するのは非常に簡単です。かつては、これらは2つのプロジェクトでしたが、現在は統合されています。

Installation

シンプル!

$ 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を使用します。

20
Tim McNamara

スクリーンショットを撮る必要がある場合は、ページをレンダリングする必要があります。 (Timによって言及されたように)Seleniumを使用するか、 spynner を使用することをお勧めします。

以下は、spynnerを使用して必要なもののサンプルコードです。

import spynner

browser = spynner.Browser()
browser.load("http://stackoverflow.com/q/3369073/")
browser.snapshot().save('file.png')
browser.close()
8
marbdq

wxWebConnect は、Gecko(Mozillaのレンダリングエンジン)を制御するためのwxWidgetsライブラリです。 wxPython と一緒に使用すると、Pythonで独自の(最小限の)Webブラウザーを記述して、クリックを制御できます。

3
Katriel

Pythonでブラウザを制御するための優れた方法は、PyQt4.QtWebKit

実際に何を達成したいかによります。ユーザーの干渉なしにいくつかの自動処理を行う必要がある場合は、ブラウザ自体をロードせずに、GeckoやWebKitなどのブラウザの基盤となるエンジンを使用できます。 Pythonこれらのエンジンへのバインディングが利用可能です。

ブラウザ自体は、この種のAPIを外部プロセスに提供しません。 Firefoxの場合、拡張機能またはプラグインとして、ブラウザ側のコードをChromeに挿入する必要があります。

0
Daniel Kluev

質問は少し古いですが、 pywebkitgtk への参照はありません。試してみてください。 spynnerpyqt.qtwebkit バインディングを使用して開発しましたが、pygtkを好むプログラマーはpywebketgtk(よりPython的な感じがする)を試してみてください。ただし、Qtバインディングはより完全であることに注意してください(または、少なくとも私が最後にチェックしたときです)。

0
tokland