2014-06-17 65 views
2

我想通過python 2.7使用http://www.camp.bicnirrh.res.in/featcalc/發佈multipart/form-data。具體來說,我在FASTA格式上傳文件(稱爲'Practice.txt')基本上是這樣的格式:使用request.post通過python發佈多部分表單數據不工作

'>1(ENTER)STRINGOFSPECIFICCAPITALLETTERS' 

這個網站裏面也有一個文本框,您也可以手動輸入數據(我要離開的空白) 。此數據網站也有複選框選項,其中我要選擇'Length','Net Charge''Aliphatic Index''Hydrophobicity'。在頁面底部有一個'Submit'按鈕。
目前,這是我用於我的POST響應的代碼。

files = {'file': ('Practice.txt', open('Practice.txt', 'rb'))} 
data = {'Length':'Length', 'Net Charge':'Net Charge', 'Aliphatic Index':'Aliphatic Index','Hydrophobicity':'Hydrophobicity'} 
r = requests.post(url, files=files, data=data) 
r.text 

問題是,當我做r.text時,沒有任何數據會回來。網站在使用瀏覽器時計算所有這些東西的值。我得到了WireShark,我一直試圖查看實時提要,看看我發送給服務器的是什麼,雖然我使用的是逐字以上的代碼,但它並沒有回報瀏覽器的值。

有沒有人有任何想法,爲什麼這可能會發生/如何實際獲取數據?感謝您的任何意見!

回答

3

這將工作:

import requests 
import urllib 

session = requests.Session() 

file={'file':(open('practice.txt','r').read())} 

url = 'http://www.camp.bicnirrh.res.in/featcalc/tt1.php' 

payload = { 
    'length' :'length',  #Length 
    'netcharge':'netcharge', #Net Charge 
    'aliphatic':'aliphatic', #Aliphatic Index 
    'gravy' :'gravy'  #Hydrophobicity 
    } 

raw = urllib.urlencode(payload) 

response = session.post(url, files=file, data=payload) 

print(response.text) 

所有選項:

payload = { 
    'length'  :'length',  #Length 
    'netcharge' :'netcharge', #Net Charge 
    'amino'  :'amino',  #Amino acid composition 
    'aliphatic' :'aliphatic', #Aliphatic Index 
    'instability':'instability', #Instability Index 
    'gravy'  :'gravy',  #Hydrophobicity 
    'sec'  :'sec'   #Secondary Structure Propensity 
    } 
+0

太謝謝你了!這工作!對此,我真的非常感激! – Shay

+0

@Shay很高興能有幫助!如果您覺得這對您有用,請隨時接受我的回答。 :-)(http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) – NorthCat

+0

再次感謝之前。我希望你可以再次幫我解決另一個POST請求,這個請求應該和上面的一樣,但是由於某種原因,它不是。我做了上面的所有細節 - 導入請求,導入urllib,session = requests.Session(),file = {'file':(打開('Bishop/newdenovo2.txt','r')。read())} ,url ='http://www.camp.bicnirrh.res.in/predict/hii.php'payload = {「algo []」:「svm」}(因爲我只想要第一個複選框項目'SVM')原始和響應與上面的相同。我也可以將其作爲一個問題發佈!再次感謝你! – Shay

相關問題