4

Webページとの対話を自動化したい。私は今までpycurlを使用してきましたが、最終的にWebページはjavascriptを使用するため、代替手段を探しています。一般的な操作は、「ページを開き、テキストを検索し、リンクをクリックして(フォームを開きます)、フォームに入力して送信する」です。

違いが生じる場合は、GoogleAppEngineにデプロイしています。

明確化:ウェブページをappengineにデプロイしています。ただし、インタラクションは別のマシンで実行されます。したがって、セレンは最良の選択のようです。

4

5 に答える 5

6

Twill と mechanize は Javascript を実行しません。Qt と Selenium は、純粋な Python コードのみをサポートする App Engine ((1)) では実行できません。私は純粋な Python Javascript インタープリターを知りません。これは、JS をサポートするスクレーパーを App Engine にデプロイするために必要なものです:-(.

Java には、少なくとも App Engine (の Java バージョン) にデプロイできる何かがあるのではないでしょうか? Java と Python の App Engine アプリ バージョンは同じデータストアを使用できるため、アプリの一部を Python のままにしておくことができますが、Javascript を理解する必要がある部分だけではありません。残念ながら、Java / AE 環境について十分な知識がなく、特定のパッケージを試すことを提案することはできません。

((1)): 明確にするために、私が反対票を投じられるまでになった誤解があるようです: 別のコンピューターで Selenium やその他のスクレイパーを実行している場合、もちろん App Engine にデプロイされたサイトをターゲットにすることができます(対象のウェブサイトがどのように展開されているか、どのプログラミング言語を使用しているかなどは関係ありません。アクセスできるウェブサイトであれば [[実際のウェブサイト: flash, &c, may may be違う]])。私が質問をどのように読んだかというと、OP はスクレイピングを App Engine アプリの一部として実行する方法を探しているということです。これは問題のある部分であり、あなた (または他の誰か;-) がスクレイピングされているサイトを実行する場所ではありません!

于 2009-12-03T03:14:52.257 に答える
4

セレンはどうですか?( http://seleniumhq.org )

于 2009-12-03T01:11:22.380 に答える
1

PyQt で QtWebKit を使用してみましたか、特定の URL を読み込んで Python からコンテンツを読み取ることができます。その後、URL を検索し、Webkit を再度使用してアクセスできます。これらはすべて、応答コードをテストするいくつかの基本的な Django (GAE で Django を使用していると仮定) のビュー テストで実行できると思います。GUI の方法で実行する場合に開始するための QtWebKit PyQt コードのサンプルを次に示します。

import sys
import time

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)

web = QWebView()

settings = web.settings()
settings.setAttribute(QWebSettings.PluginsEnabled, True)
settings.setAttribute(QWebSettings.JavaEnabled, True)
settings.setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
settings.setAttribute(QWebSettings.JavascriptCanAccessClipboard, True)
settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
settings.setAttribute(QWebSettings.ZoomTextOnly, True)



settings.setOfflineStoragePath('.')
settings.setIconDatabasePath (".")

url = 'http://stackoverflow.com'

web.load(QUrl(url))

web.show()

sys.exit(app.exec_())
于 2009-12-03T15:19:24.977 に答える
0

機械化をチェックしてください。「典型的なやり取り」をかなり簡単に処理できるはずです。別のオプションはSeleniumかもしれませんが、個人的には使用したことがありません。

于 2009-12-03T01:11:50.913 に答える
0

ツイルは非常に軽量ですが、うまく機能します。

于 2009-12-03T02:21:46.243 に答える