为了账号安全,请及时绑定邮箱和手机立即绑定

教你用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

正在回答

3 回答

都是大佬,像我直接就在jupyter上又装了个python2...

0 回复 有任何疑惑可以回复我~
<p>我也写了一个= ̄ω ̄=</p>

<code>
from urllib import request, parse


def url_simple_demo(URL_STR):
    response = request.urlopen(URL_STR)
    print('>>>>>> headers:')
    print(response.info())
    print('>>>>>> body:')
    print(response.read().decode('utf-8'))
    return


def url_get_demo(URL_STR):
    url_param = parse.urlencode({'param1':'hello', 'param2':'world'})
    response = request.urlopen(URL_STR + '?' + url_param)
    print('>>>>>> status: %s' % response.getcode())
    print('>>>>>> headers:')
    print(response.info())
    print('>>>>>> body:')
    print(response.read().decode('utf-8'))
    return


if __name__ == '__main__':
    URL_IP = 'http://httpbin.org/ip'
    url_simple_demo(URL_IP)

    print('-------分割线-------\n')
    URL_GET = 'http://httpbin.org/get'
    url_get_demo(URL_GET)
</code>


<p>这是输出结果:</p>

>>>>>> headers:
Connection: close
Server: meinheld/0.6.1
Date: Sat, 12 Aug 2017 11:43:20 GMT
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
X-Powered-By: Flask
X-Processed-Time: 0.000606060028076
Content-Length: 31
Via: 1.1 vegur


>>>>>> body:
{
  "origin": "58.252.91.87"
}

-------分割线-------

>>>>>> status: 200
>>>>>> headers:
Connection: close
Server: meinheld/0.6.1
Date: Sat, 12 Aug 2017 11:43:21 GMT
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
X-Powered-By: Flask
X-Processed-Time: 0.00139307975769
Content-Length: 308
Via: 1.1 vegur


>>>>>> body:
{
  "args": {
    "param1": "hello", 
    "param2": "world"
  }, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Connection": "close", 
    "Host": "httpbin.org", 
    "User-Agent": "Python-urllib/3.6"
  }, 
  "origin": "58.252.91.87", 
  "url": "http://httpbin.org/get?param1=hello&param2=world"
}
1 回复 有任何疑惑可以回复我~

补一个完整的截图

http://img1.sycdn.imooc.com//58e7b2650001275d12110641.jpg

3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python-走进Requests库
  • 参与学习       38700    人
  • 解答问题       114    个

python类库中,requests是一件利器,想深入了解一起来学吧

进入课程

教你用python3怎么写这个小程序???

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号