如何正确阅读www-site?

时间:2013-12-16 21:59:02

标签: python python-3.3

我试图在我的Python项目上阅读WWW-site。但是,如果我无法连接到Internet,代码将崩溃。如果在阅读网站的某些时候没有连接,如何捕获异常?

import sys
import time
import urllib3

# Gets the weather from foreca.fi.
def get_weather(url):
    http = urllib3.PoolManager()
    r = http.request('GET', url)
    return (r.data)

time = time.strftime("%Y%m%d")
url = "http://www.foreca.fi/Finland/Kuopio/Saaristokaupunki/details/" + time 
weather_all = get_weather(url)
print(weather_all)

2 个答案:

答案 0 :(得分:1)

如果没有到指定服务器的路由(即互联网连接丢失),我认为urllib3会throw URLError例外,所以也许你可以使用简单的try catch?我对urllib3并不是特别精通,但是对于urllib来说,它会是这样的:

E.g。

try:
  weather_all = get_weather(url)
except urllib.error.URLError as e:
  print "No connection to host"

答案 1 :(得分:1)

我测试了你的代码没有连接,如果它没有连接它会引发MaxRetryError(“当超过最大重试次数时引发。”)所以你可以处理类似的异常:

try:
    # Your code here
except urllib3.exceptions.MaxRetryError:
    # handle the exception here

您可以做的另一件事是使用超时并在超时时执行一些特殊操作,以便您有额外的控制权。从某种意义上说,它告诉你的异常是什么,它达到了最大值

另外,请考虑使用requests library