2013-05-19 56 views
2

到目前爲止,我已經實現機械化的代碼,這是否一個動態flie形式:機械化提交創建需要下載

goes to a site 
logs in 
submits a form 

繼承人在那裏我打的問題。我需要做的是將響應(文件)寫入本地文件。就python與文件系統交互而言,我非常無能。

在此先感謝

編輯: 下面是一些代碼我現在有

br = mechanize.Browser() 
br.set_handle_robots(False) 
br.set_handle_redirect(True) 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1000) 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

formcount=0 
for frm in br.forms(): 
    if str(frm.attrs["id"])=="id-of-form": 
    break 
    formcount=formcount+1 
br.select_form(nr=formcount) 

with open('a filename', 'wb') as f: 
    shutil.copyfileobj(br.submit(name='submit', label='value of submit button'), f) 

如果它的事項;我正在運行mac OS X

回答

2

submit的返回值是一個文件類對象。您可以將數據複製到本地文件:

import shutil 
with open('downloaded', 'wb') as f: 
    shutil.copyfileobj(br.submit(), f) 

Unrelatedly,可以縮短選型有點像這樣:

br.select_form(predicate=lambda form: form.attrs['id'] == 'id-of-form') 

這裏是一個完整的工作示例:

import mechanize 
import shutil 

br = mechanize.Browser() 
br.open('http://stackoverflow.com/') 
br.select_form(predicate=lambda form: form.attrs.get('id') == 'search') 
br['q'] = '[python-mechanize]' 
with open('search results.html', 'wb') as f: 
    shutil.copyfileobj(br.submit(), f) 
+0

我想我明白那是什麼;但是你能否顯示你將把表單選擇和提交表單的位置......或者是提交表單的br.submit()提交表單 – zggz12

+0

@ zggz12:'br.submit()'提交表單。 – icktoofay

+0

然後在這個 之前完成表格的選擇,以及我在哪裏告訴它要寫入什麼文件 – zggz12