我想使用python requests
包对公共api执行一个简单的get请求。
我使用的是requests 2.25.1和python 3.6
不幸的是,在URL参数中有一个额外的&
,我无法确定它来自何处。下面的示例代码使用错误的url和正确的url删除符号
import requests
import json
URL="https://search.rcsb.org/rcsbsearch/v1/query?json="
JSON={
"query": {
"type": "terminal",
"service": "text",
"parameters": { "value": "thymidine kinase" }
},
"return_type": "entry"
}
r=requests.get(url = URL,params=json.dumps(JSON, separators=(',', ':')))
r.url
然后是
https://search.rcsb.org/rcsbsearch/v1/query?json=&%7B%22query%22:%7B%22type%22:%22terminal%22,%22service%22:%22text%22,%22parameters%22:%7B%22value%22:%22thymidine%20kinase%22%7D%7D,%22return_type%22:%22entry%22%7D
这会产生500的误差
如果将json=&%7
更改为json=%7
,则请求有效。我怎样才能去掉多余的符号
https://search.rcsb.org/rcsbsearch/v1/query?json=%7B%22query%22:%7B%22type%22:%22terminal%22,%22service%22:%22text%22,%22parameters%22:%7B%22value%22:%22thymidine%20kinase%22%7D%7D,%22return_type%22:%22entry%22%7D
问题是您都试图使用
params
关键字参数来requests.get
并且您试图自己构建参数字符串。由于URL中的?
,底层URL操作代码假定已经存在参数,并使用&
添加新参数(如someurl?param1=foo¶m2=bar...
)选择一个或另一个机构,例如:
相关问题 更多 >
编程相关推荐