import urllib2,urllib
params = {}
resp = urllib2.urlopen('http://somewhere/',urllib.urlencode(params))
在 urlopen() 方法中,方法 'get' 或 'post' 没有 argv。这种方法可以通过所需的 url 找出“get”或“post”吗
import urllib2,urllib
params = {}
resp = urllib2.urlopen('http://somewhere/',urllib.urlencode(params))
在 urlopen() 方法中,方法 'get' 或 'post' 没有 argv。这种方法可以通过所需的 url 找出“get”或“post”吗
从文档中:
urllib2.urlopen(url[, data][, timeout])
data
可以是一个字符串,指定要发送到服务器的附加数据,或者None
如果不需要此类数据。目前,HTTP 请求是唯一使用data
; 提供参数时,HTTP 请求将是 aPOST
而不是 a 。应该是标准格式的缓冲区。该 函数采用 2 元组的映射或序列,并以这种格式返回一个字符串。urllib2 模块发送 包含 Connection:close 标头的请求。GET
data
data
application/x-www-form-urlencoded
urllib.urlencode()
HTTP/1.1
它计算出GET
或POST
基于给定的参数。在您的情况下,这将是POST
因为提供了参数字典。
使用POST
你可以这样做(来自文档)
import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
print f.read()
请注意,我们在这里将字典传递给函数。
要使用GET
,我们只需单独传递 URL(这里我们使用字符串插值将参数添加到 URL,而不是将其传递给 URL lib)
import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
print f.read()