我正在尝试将字符串编码为url
以搜索谷歌学者,很快就会发现,urlencode
中未提供urllib3
。
>>> import urllib3
>>> string = "https://scholar.google.com/scholar?" + urllib3.urlencode( {"q":"rudra banerjee"} )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'urlencode'
所以,我检查了urllib3 doc并发现,我可能需要request_encode_url
。但我没有使用它的经验而且失败了。
>>> string = "https://scholar.google.com/scholar?" +"rudra banerjee"
>>> url = urllib3.request_encode_url('POST',string)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'request_encode_url'
那么,我如何将字符串编码为url?
NB 我对urllib3没有任何特别的兴趣。所以,任何其他模块也会这样做。
答案 0 :(得分:1)
要简单地对网址中的字段进行编码,您可以使用urllib.urlencode
。
在Python 2中,这应该可以解决问题:
import urllib
s = "https://scholar.google.com/scholar?" + urllib.urlencode({"q":"rudra banerjee"})
print(s)
# Prints: https://scholar.google.com/scholar?q=rudra+banerjee
在Python 3中,它位于urllib.parse.urlencode
之下。
答案 1 :(得分:0)
(编辑:我认为你想要下载网址,而不是简单地对其进行编码。我的错误。我会将此答案作为其他人的参考,但请参阅编码的其他答案URL。)
如果您将字典传递到fields
,urllib3将负责为您编码。首先,您需要为您的连接实例化一个池。这是一个完整的例子:
import urllib3
http = urllib3.PoolManager()
r = http.request('POST', 'https://scholar.google.com/scholar', fields={"q":"rudra banerjee"})
print(r.data)
调用.request(...)
将根据方法为您计算编码。
入门示例如下:https://urllib3.readthedocs.org/en/latest/index.html#usage