通过python将multipart / form数据发布到带有复选框的站点

时间:2014-06-16 23:16:42

标签: python post checkbox multipartform-data

我对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

对于此代码,数据是已打开,读取和关闭的文件,文件是文件名和完整文件名 - ex(' Practice',' Practice。 TXT') 这回归了我认为的好格式。但是当我尝试使用urllib2,urllib2 request和urlopen发布加密数据时,我得到的东西看起来像结果页面的源代码,但没有我需要的任何数据(即没有值) )。我试过这个也只是为了看它是否会起作用。

files = {'file': ('Practice.txt', open('Practice.txt', 'rb'))}
r = requests.post(url, files=files)
r.text

问题是,我认为,页面要求您选择一个复选框,我不知道如何在帖子请求中执行此操作。我当时正在考虑尝试使用cgi脚本,但我确实没有想法。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

此处requests模块最有用,您需要设置datafiles

files = {'file': ('Practice.txt', open('Practice.txt', 'rb'))}
data = {'amino':'amino', 'aliphatic': 'aliphatic'}
r = requests.post(url, files=files, data=data)
r.text