2011-05-28 61 views
1

我嘗試使GAE的機械化模塊工作,但沒有運氣。 我使用最新版本的機械化和從這裏是特定於GAE的版本 Python Mechanize + GAEpython codeGAE的機械化模塊

我想要做的是登錄網站並提交表單。

實施例代碼

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我得到

app.mechanize.ClientForm.ControlNotFoundError 

ControlNotFoundError: no control matching name 'txt' 

的代碼測試和工程外GAE所以這是不問題。 如果有幫助,我使用kay框架。

+0

請添加代碼示例,否則很難幫到你。 – 2011-05-28 10:43:33

+0

編輯我的帖子來更好地描述問題 – 2011-05-28 12:06:26

+0

'print br.form'的輸出是什麼? – cerberos 2011-05-28 14:22:30

回答

0

看起來您正嘗試從Python GAE應用程序中執行此操作。對於非靈活環境GAE代碼可以執行哪些限制(例如限制對其他進程的脫殼等),這些限制在Google雲端函數中不存在。 我建議您從Google雲端功能中嘗試此操作。雖然目前還沒有官方的python支持GCF,但有一個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代碼的一個侷限性是阻止了它的工作 – 2018-02-13 08:12:14