我对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脚本,但我确实没有想法。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
此处requests
模块最有用,您需要设置data
和files
files = {'file': ('Practice.txt', open('Practice.txt', 'rb'))}
data = {'amino':'amino', 'aliphatic': 'aliphatic'}
r = requests.post(url, files=files, data=data)
r.text