Python Mechanize提交创建需要下载的动态flie的表单
到目前为止,我已经有了实现以下功能的mechanize代码:Python Mechanize提交创建需要下载的动态flie的表单,python,macos,mechanize-python,Python,Macos,Mechanize Python,到目前为止,我已经有了实现以下功能的mechanize代码: 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_refr
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提交的返回值是一个类似文件的对象。您可以将数据复制到本地文件:
import shutil
with open('downloaded', 'wb') as f:
shutil.copyfileobj(br.submit(), f)
不迟,您可以这样缩短表单选择位:
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)
我想我明白那是什么;但是,您能告诉我您将把表单放在哪里选择并提交表单……或者
br.submit()
提交表单吗form@zggz12:br.submit()
提交表单。然后在此之前完成表单的选择,我在哪里告诉它要写入哪个文件to@zggz12:是的,你在这之前填好表格。要写入的文件名是open
的第一个参数,因此您可以用所需的任何表达式替换“下载的”
;我要修改我的问题,使它更具体