除了获取网页还有哪些网络请求的知识需要我们掌握呢?
我们请求网页,平时看到的是浏览器访问,实际在实现中会有不同的请求方式的,那么请求网页的方式最常用到的是Get和Post。
Get和Post的区别
当我们输入网址的时候,后面跟着传给网页的参数,比如请求:httpbin.org
这个就是http测试的网站,可以在里面尝试不同的http协议的功能。
实现Get请求
http://httpbin.org/get?a=123&b=456 告诉服务器传递a,b的值,浏览器就得知了该信息。
注意:
Get的好处格式非常简单;坏处传出数值的大小限制
Post请求
一般提交用户名密码的时候会用到post请求
比如访问:infoq.com/cn,登录的时候输入信息,发现并没有在地址栏显示用户信息,这种方式为Post方式。
实现方式
Get请求from urllib import parse#处理数据from urllib import request#发起请求response2=request.urlopen('http://httpbin.org/get',timeout=1)print(response2.read())
Post请求from urllib import parse#处理数据from urllib import request#发起请求data = bytes(parse.urlencode({'world':'hello'}),encoding='utf-8')#封装数据response=request.urlopen('http://httpbin.org/post',data=data)#data=data指定传输的数据print(response.read().decode('utf-8'))
演示超时的结果from urllib import parse#处理数据from urllib import request#发起请求Response3=request.urlopen('http://httpbin.org/get',timeout=0.1)print(response3.read())
利用try捕获import urllibimport sockettry: response3=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)except urllib.error.URLError as e: if isinstance(e.reason,socket.timeout): print("TIME OUT")