本文共 1681 字,大约阅读时间需要 5 分钟。
Encode query with Python From WABI Jump to: navigation, search Contents [hide] 1 Summary 2 Description 3 Sample program 4 Link Summary Result may not be able to be retrieved normally, if query including non alphanumeric character is used with Python. Description You have to encode your query. If qPath is a query to be encoded, please do as follows. import urllib urllib.urlencode({'<parameter_name>':qPath,}) Sample program This tutorial introduces a example that retrieve entries which feature-key is 'rRNA', qualifier name is 'product' and has '16s ribosomal RNA' in qualifier value with searchByXMLPath of ARSA. Download this program import socket import urllib #set server host = "xml.nig.ac.jp" port = 80 #set API server url = "/rest/Invoke" qPath = "/ENTRY/DDBJ/feature-table/feature/f_key=='rRNA' AND " qPath = qPath + "(/ENTRY/DDBJ/feature-table/feature{/f_key=='rRNA' AND " qPath = qPath + "/f_quals/qualifier{/q_name=='product' AND /q_value='16S ribosomal RNA'}}) " rPath = "/ENTRY/DDBJ/primary-accession,/ENTRY/DDBJ/definition" offset = "1"; count = "10"; query = urllib.urlencode({'queryPath':qPath,'returnPath':rPath,'offset':offset,'count':count}); #set parameter query = "service=ARSA&method=searchByXMLPath&"+ query; #make connection sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: sock.connect((host, port)) sock.send("POST " + url + " HTTP/1.0\n") sock.send("Content-Type: application/x-www-form-urlencoded\n") sock.send("User-Agent: python/socket\n") sock.send("Content-Length:" + `len(query)` + "\n\n") sock.send(query) except socket.error, e: print 'Error: %s' % e while 1: rcvmsg = sock.recv(1024) print rcvmsg, if rcvmsg == : break sock.close
转载地址:http://nyhnx.baihongyu.com/