1.Timeout设置超时
只能修改Socket设置全局Timeout
#! /usr/bin/env python3import socketimport urllib.request# timeout in secondstimeout = 2socket.setdefaulttimeout(timeout)# this call to urllib.request.urlopen now uses the default timeout# we have set in the socket modulereq = urllib.request.Request(‘http://www.python.org/‘)a = urllib.request.urlopen(req).read()print(a)
2.获取HTTP响应码
#! /usr/bin/env python3import urllib.requestreq = urllib.request.Request(‘http://python.org/‘)try: ? urllib.request.urlopen(req)except urllib.error.HTTPError as e: print(e.code)print(e.read().decode("utf8"))
3、异常处理1
1 #! /usr/bin/env python3 2 ?3 from urllib.request import Request, urlopen 4 ?5 from urllib.error import URLError, HTTPError 6 ?7 req = Request(‘http://www.python.org/‘) 8 ?9 try:10 11 response = urlopen(req)12 13 except HTTPError as e:14 15 print(‘The (www.python.org)server couldn‘t fulfill the request.‘)16 17 print(‘Error code: ‘, e.code)18 19 except URLError as e:20 21 print(‘We failed to reach a server.‘)22 23 print(‘Reason: ‘, e.reason)24 25 else:26 27 print("good!")28 29 print(response.read().decode("utf8"))
4、异常处理2
1 #! /usr/bin/env python3 2 ?3 from urllib.request import Request, urlopen 4 ?5 from urllib.error import ?URLError 6 ?7 req = Request("http://www.python.org/") 8 ?9 try:10 11 response = urlopen(req)12 13 except URLError as e:14 15 if hasattr(e, ‘reason‘):16 17 print(‘We failed to reach a server.‘)18 19 print(‘Reason: ‘, e.reason)20 21 elif hasattr(e, ‘code‘):22 23 print(‘The server couldn‘t fulfill the request.‘)24 25 print(‘Error code: ‘, e.code)26 27 else: ?print("good!")28 29 print(response.read().decode("utf8"))
5.重定向
import urllib.request
import socket
url = ‘https://www.baidu.com‘
response =urllib.request.urlopen(url)
isRediercted = response.geturl() == "https://www.baidu.com"
6.代理设置
import urllib.request
proxy_support = urllib.request.ProxyHandler({‘sock5‘: ‘localhost:1080‘})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
a = urllib.request.urlopen("http://www.python.org/").read().decode("utf8")
print(a)
urllib的实现---timeout,获取http响应码,重定向,proxy的设置
原文地址:http://www.cnblogs.com/mrwuzs/p/8018303.html