要解决 Python 3 urllib 没有 urlencode 属性的问题,可以按如下步骤进行:
1. 导入 urllib.parse 模块
在 Python 3 中,将 urllib 和 urllib2 合并为 urllib,其中 urlencode 现在位于 urllib.parse 模块中。因此,在代码中使用 urlencode 之前,必须先导入此模块。
from urllib.parse import urlencode
2. 调用 urlencode 函数
urlencode 函数接收一个字典参数,将其转换为 URL 编码字符串。例如,将字典参数传递给 urlencode 函数:
params = {'username': 'admin', 'password': 'admin123'}
urlencode(params)
这将返回一个字符串 'username=admin&password=admin123'。
示例1:封装 GET 请求参数
以调用新浪天气 API 为例,假设我们需要构造以下 GET 请求参数:
city: 北京
appkey: 123456
则可以使用如下代码生成请求 URL:
import urllib.request
BASE_URL = 'http://api.weather.sina.com.cn/xxxx'
CITY = '北京'
APPKEY = '123456'
params = {
'city': CITY,
'appkey': APPKEY
}
url = BASE_URL + '?' + urlencode(params)
with urllib.request.urlopen(url) as f:
print(f.read().decode('utf-8'))
示例2:封装 POST 请求参数
以构造以下 POST 请求参数为例:
name: 张三
age: 30
hobby: 篮球
则可以使用如下代码完成请求:
import urllib.request
BASE_URL = 'http://www.example.com/submit'
params = {
'name': '张三',
'age': 30,
'hobby': '篮球'
}
data = urlencode(params).encode('utf-8')
req = urllib.request.Request(BASE_URL, data=data)
with urllib.request.urlopen(req) as f:
print(f.read().decode('utf-8'))
以上就是解决 Python 3 urllib 没有 urlencode 属性的问题的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决python 3 urllib 没有 urlencode 属性的问题 - Python技术站