本文共 1180 字,大约阅读时间需要 3 分钟。
1. 通过使用urllib模块使用post/get方式请求url;
2. urllib模块使用过程中的异常处理。
import urllib.requestimport urllib.parseimport urllib.error #url异常处理 ###GET方法keywd="python"keywd=urllib.request.quote(keywd) #搜索中文的方法url = "http://www.baidu.com/s?wd="+keywdreq=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(); ####postkeywd="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 ")