【发布时间】:2014-06-17 07:56:47
【问题描述】:
总的来说,我对 python 和计算机比较陌生。目前我正在尝试将数据发布到一个网站,即http://www.camp.bicnirrh.res.in/featcalc/,并在上传包含要分析的数据的文件后选中四个复选框。
到目前为止,这是我尝试过的。
def encode_multipart_formdata(fields, files, data):
"""
fields is a sequence of (name, value) elements for regular form fields.
files is a sequence of (name, filename, value) elements for data to be uploaded as files
Return (content_type, body) ready for httplib.HTTP instance
"""
BOUNDARY = '-----------------------------7de18336272e32'
CRLF = '\r\n'
L = []
L.append('--' + BOUNDARY)
L.append('Content-Disposition: form-data; name="seq"')
L.append('')
L.append('--' + BOUNDARY)
L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (files[0], files[1]))
L.append('Content-Type: text/plain')
L.append('')
L.append(data)
L.append('')
for (key, value) in fields:
L.append('--' + BOUNDARY)
L.append('Content-Disposition: form-data; name="%s"' % key)
L.append('')
L.append(value)
L.append('--' + BOUNDARY + '--')
L.append('')
body = CRLF.join(L)
content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
return content_type, body
对于此代码,data 是已打开、读取和关闭的文件,files 是文件名和完整文件名 - ex ('Practice', 'Practice.txt') 这返回了我认为很好的格式。但是当我尝试使用 urllib2、urllib2 请求和 urlopen 发布加密数据时,我得到的东西看起来像结果页面的源代码,但没有任何我需要的数据(即没有值)。我也试过了,只是想看看它是否有效。
files = {'file': ('Practice.txt', open('Practice.txt', 'rb'))}
r = requests.post(url, files=files)
r.text
问题是,我认为该页面要求您选择一个复选框,而我不知道如何在发布请求中执行此操作。我正在考虑接下来尝试使用 cgi 脚本,但实际上我已经没有想法了。
任何帮助将不胜感激!谢谢!
【问题讨论】:
标签: python post checkbox multipartform-data