在Python中对非值对进行URL编码

16 投票
1 回答
12629 浏览
提问于 2025-04-15 11:04

我正在尝试在Python中使用谷歌的AJAX(JSON)网页搜索API。现在遇到问题,因为Python的urllib.urlencode()只能处理成对的值,而不能单独处理字符串来进行编码。在谷歌的API中,查询字符串就是搜索词,它并没有和一个变量关联起来。

query = "string that needs to be encoded"
params = urllib.urlencode(query) # THIS FAILS
# http://code.google.com/apis/ajaxsearch/documentation/reference.html
url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&%s&%s" % (params, GOOGLE_API_KEY)

request = urllib2.Request(url)
request.add_header('Referer', GOOGLE_REFERER)

search_results = urllib2.urlopen(request)
raw_results = search_results.read()
json = simplejson.loads(raw_results)
estimatedResultCount = json['responseData']['cursor']['estimatedResultCount']

if estimatedResultCount != 0:
    print "Google: %s hits" % estimatedResultCount

我该如何对我的搜索词进行编码呢?

1 个回答

37

我觉得你应该找的是 urllib.quote 这个东西。

撰写回答