python3.6通过urllib模块使用post/get方法

1. 通过使用urllib模块使用post/get方式请求url;

2. urllib模块使用过程中的异常处理。


import  urllib.request
import  urllib.parse
import  urllib.error #url异常处理

###GET方法
keywd="python"
keywd=urllib.request.quote(keywd)  #搜索中文的方法
url = "http://www.baidu.com/s?wd="+keywd
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
print(data.decode('utf-8','ignore')) #转为utf-8,如果出现异常,责忽略
fh=open("/Users/huangliao/Desktop/1.html","wb")
fh.write(data)
fh.close();


####post
keywd="python"
keywd=urllib.request.quote(keywd)
url="http://www.baidu.com/s"
mydata=urllib.parse.urlencode({"wd":"python"}).encode('utf-8')
req=urllib.request.Request(url,mydata)
data=urllib.request.urlopen(req).read().decode("utf-8")
print(data)

'''
在清求url请求时会发现存在异常情况,常用的请求异常类是  HTTPError/URLError 两种,
HTTPError异常时URLError异常的子类,是带异常状态码和异常原因的,而URLError异常类
是不带状态码的,所以在使用中不用直接用URLError代替HTTPError异常,如果要代替,一定
要判断是否有状态码属性
URLError:
1/连接不上远程服务器;
2/url不存在;
3/本地没有网络;
4/假如触发httperror

所以通常用特殊处理来使用URLError来替代HTTPError异常

'''

try:
    urllib.request.urlopen("http://www.blog.csdn.net")
except urllib.error.URLError as e:
    if hasattr(e,"code"):
        print("code:")
        print(e.code)
    if hasattr(e,"reason"):
        print("reason:")
        print(e.reason)
finally:
    print("URLError ")





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值