[英]Python: how to set up a requests.post
我正在嘗試以編程方式使用此工具http://www.idtdna.com/calc/analyzer,以便可以批量分析幾十個DNA序列。
在Chrome的開發人員工具中查看時,我看到我單擊Analyze按鈕時(在“序列”字段中輸入序列(例如“ AACCGGTT”)后)正在發送POST請求。 在“響應”選項卡中,我還可以看到希望收集的響應(例如“ MeltTemp”)。 因此,按照本教程( http://docs.python-requests.org/en/latest/user/quickstart/#make-a-request ),我整理了以下代碼段,但顯然無法正常工作。
>>> import requests
>>> url = 'http://www.idtdna.com/calc/analyzer/home/analyze' # from: ChromeDevTools -> Network -> Name: analyze -> tab: Headers -> General -> Request URL
>>> data = {"settings":{"Sequence":"AACCGGTT", # from: ChromeDevTools -> Network -> Name: analyze -> tab: Headers -> Request Payload
"NaConc":50,
"MgConc":0,
"DNTPsConc":0,
"OligoConc":0.25,
"NucleotideType":"DNA",
}}
>>> r = requests.post(url, data=data)
>>> r.url # 404 page
u'http://www.idtdna.com/404.aspx?aspxerrorpath=/calc/analyzer/home/analyze'
# I was hoping for something like this that gives me the JSON response (which can be found at
# ChromeDevTools -> Network -> Name: analyze -> tab: Response)
>>> r.some_magical_function()
{"Sequence":"AAC CGG TTG GTT AAT T","NaConc":50, ... "MeltTemp":45.1, ...}
我想念什么?
發布請求是否需要更復雜(使用Cookie?會話?)? 如果是這樣,請提供指向我需要學習的知識(或解決方案:p)
我了解該網站是否可以防止此類使用; 如果基本上不可能,那么您建議采取什么策略?硒?
request.Session
設置Cookie才能在實際請求之前至少訪問該頁面一次) json=...
參數) import requests
url = 'http://sg.idtdna.com/calc/analyzer/home/analyze'
data = {
'settings': {
'Sequence': 'AACCGGTT',
'NaConc': 50,
'MgConc': 0,
'DNTPsConc': 0,
'OligoConc': 0.25,
'NucleotideType': 'DNA',
}
}
s = requests.Session()
s.get('http://sg.idtdna.com/calc/analyzer') # to set cookies
r = s.post(url, json=data)
print(r.json())
更新
根據位置,不會發生重定向。 在這種情況下,請使用www.idtdna.com
而不是sg.idtdna.com
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.