urllib2.urlopen - 当链接错误时更快关闭
我想让我的程序在一个时间段内尝试打开网页并获取数据,这个时间段是 [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请求。