2011-05-28 11 views
1

機械化モジュールをGAEで動作させようとしましたが、運はありませんでした。 最新バージョンのmechanizeと、ここからGAE固有のバージョン Python Mechanize + GAEpython codeを使用しました。GAEモジュールを機械化する

私がしたいのは、ウェブサイトにログインしてフォームを送信することです。

例コードMechanizeのモジュールと

import mechanize 

def mech(uname,passw,txtto,msg): 
    br = mechanize.Browser() 
    br.open("http://example.com") 
    br.select_form(nr=0) 

    br["username"]= uname 
    br["password"]= passw 
    # br.form 

    response = br.submit() 
    br.select_form(nr=0) 
    # print br.form 

    br["txt"] = txtto 
    br["message"] = msg 

    br.submit() 
    br.back() 

私は

'str' object has no attribute 'fileno' 

とgaemechanizeとを取得する私は、コードをので、これではありませんテストされ、外部にGAEに動作している

app.mechanize.ClientForm.ControlNotFoundError 

ControlNotFoundError: no control matching name 'txt' 

を取得問題。 これが役に立つなら、私はkayフレームワークを使用しています。

+0

コード例を追加してください。それ以外の場合は、手助けするのは非常に困難です。 –

+0

問題をよりよく説明するために投稿を編集しました –

+0

'print br.form'の出力は何ですか? – cerberos

答えて

0

Python GAEアプリ内でこれを実行しようとしているようです。フレックス環境以外のGAEコードでできること(Google Cloud機能内に存在しない他のプロセスなどへのシェルターの制限など)には多くの制限があります。 Google Cloud機能から試してみることをおすすめします。 GCFの公式のPythonサポートはありませんが、github projectがあります。これにより、PythonコードをGCFにデプロイできるようになります。

Node.jsクロムリモートプラグインを使用して、GCFで同様のブラウザオートメーションコードを使用することができました.GCFも同様に機能すると思います。

クラウド機能を使用すると、GAEアプリから多くの負担がかかります。そのため、これは本当にバックグラウンドの仕事です。

Node.jsまたはPythonを使用してクラウド機能を記述する場合でも、設定したPython GAEアプリ内のPub/SubまたはHTTPトリガーから簡単に呼び出すことができます。

https://cloud.google.com/functions/

+0

注:コードがGAEの外部で動作すると言いますので、標準的な環境GAEコードの制限の1つが、これが動作しないようにしていると確信しています –

関連する問題