教你用python3怎么写这个小程序???
现在都用python3了,老师还用2来教,这里无私地提供python3的版本,希望对大家有帮助。
先简单讲解下,python3中已经统一只有一个urllib库了,所以没有老师讲的那么复杂。
另外注意:python3中的urlopen方法在urllib.request库下,注意使用时不要导错包了。
直接上代码吧。
from urllib import request, parse
URL_IP = "http://httpbin.org/ip"
URL_GET = "http://httpbin.org/get"
def use_simple_urllib():
response = request.urlopen(URL_IP)
print(">>>>Response Headers:")
print(response.info())
print(">>>>Response Body:")
print(response.read().decode('utf-8'))
def use_params_urllib():
# 构建请求参数
params = parse.urlencode({'param1': 'hello', 'param2': 'world'})
print("Request Params:")
print(params)
# 发送请求
response = request.urlopen("?".join([URL_GET, "%s"]) % params)
# 处理响应
print(">>>>Response Headers:")
print(response.info())
print(">>>>Response Body:")
print(response.read().decode('utf-8'))
if __name__ == '__main__':
print(">>>Use simple urllib:")
use_simple_urllib()
print(">>>Use params urllib")
use_params_urllib()urlopen方法返回的是HttpResponse对象,这个对象的方法getheaders()以列表形式返回头部信息,也可以用info(),打印效果跟老师一样,更好看些。
因为HttpResponse对象不能迭代,所以不能用老师的那个方法,只能用read()方法读出信息,再用decode()用utf-8格式解码出来!
python3中的urlencode方法在urllib.parse库里面。
喜欢python的朋友可以加我的口口群交流:146202960
