使用urllib2.urlopen()打开URL“get”或“post”时的默认方法是什么

时间:2013-02-17 08:52:00

标签: http python-2.7

import urllib2,urllib
params = {}
resp = urllib2.urlopen('http://somewhere/',urllib.urlencode(params))

在urlopen()方法中,方法'get'或'post'没有argv。 这种方法可以通过所需的网址找出“获取”或“发布”

2 个答案:

答案 0 :(得分:1)

来自documentation

  

urllib2.urlopen(url[, data][, timeout])

     

data可以是指定要发送到服务器的其他数据的字符串,   如果不需要此类数据,则为None。目前HTTP请求是   只有使用data的人; HTTP请求将是POST而不是   提供GET参数时datadata应该是缓冲区   标准application/x-www-form-urlencoded格式。该   urllib.urlencode()函数采用2元组的映射或序列   并以此格式返回一个字符串。 urllib2模块发送HTTP/1.1   使用Connection的请求:包含close标头。

答案 1 :(得分:1)

根据给出的参数,它会计算GETPOST。在你的情况下,它将是POST,因为提供了一个params字典。

使用POST你可以这样做(来自documentation

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(这里我们使用字符串插值将params添加到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()