urllib2.urlopen - 当链接错误时更快关闭

1 投票
2 回答
761 浏览
提问于 2025-04-17 06:08

我想让我的程序在一个时间段内尝试打开网页并获取数据,这个时间段是 [0,t],如果超过这个时间就要关闭连接。
我正在使用 urllib2 来完成这个任务。

t=1
url="http://example.com"
response=urllib2.urlopen(url,timeout=t)
html=response.read()

如果网址存在,这个方法似乎是有效的。但是,如果你输入一个不存在的网址,程序会花很长时间才会报错停止运行。如果我把这个程序放到某个网站上,用户就得等很久才能看到错误信息。
有没有办法让 urlopen 命令在超过设定时间后自动停止执行呢?

2 个回答

1

我不太明白你为什么会遇到这么长的延迟。

当我尝试请求一个不存在的域名时,大约在0.2秒内会出现urllib2.URLError: <urlopen error [Errno 11004] getaddrinfo failed>的错误。

你具体运行的是什么代码,想要获取哪个域名呢?

试试使用requests库,并设置超时时间。

1

如果你只是想检查这个链接是否正确,可以使用一个HEAD请求

撰写回答