2011-11-09 8 views
2
시간 제한

경우 본인은 그 내용을 검색하려면 다음을 사용하고 URL의건너 뛰기 URL은

의 목록을 가지고있다. socket.timeout: timed out이 있으면 다음 URL을 읽고 싶습니다. 이 작업을 수행하는 방법? urllib2.urlopen docs에 의해 설명 된 바와 같이

감사

+0

은 다음을 참조하십시오 http://stackoverflow.com/questions/2712524/handling-urllib2s-timeout-python – Raz

답변

1

내가 가서 생각하는거야 그로는 "충돌"당신 말은, "는 URLError을 제기". Python 자습서의 Errors and Exceptions 섹션을 참조하십시오.

for url in url_list: 
    req = urllib2.Request(url) 
    try: 
     resp = urllib2.urlopen(req, timeout=5) 
    except urllib2.URLError: 
     print "Bad URL or timeout" 
     continue # skips to the next iteration of the loop 
    resp_page = resp.read() 
    print resp_page 
1

시간 초과 예외를 잡을 필요가있는 것처럼 들립니다. 당신이하는 socket.timeout 메시지가 없습니다.

req = urllib2.Request("http://127.0.0.2") 
try: 
    resp = urllib2.urlopen(req, timeout=5) 
except urllib2.URLError: 
    print "Timeout!" 

확실히 시간 초과가되는 URL이 있어야합니다 (127.0.0.2는 사용자의 컴퓨터에 없을 수도 있음).

7

이미 답변이 있지만 URLlib2은이 문제의 원인이 아닐 수도 있습니다.

마찬가지로 지적한대로 here (또한 문제 설명에 기반한 것처럼 보임) 예외는 socket 라이브러리에 속할 수 있습니다. 이 경우

또 다른 except 추가 유사한 문제에 대한

import socket 

try: 
    resp = urllib2.urlopen(req, timeout=5) 
except urllib2.URLError: 
    print "Bad URL or timeout" 
except socket.timeout: 
    print "socket timeout" 
+2

Downvoting을 아무런 설명도하지 않습니다와 함께 정말 유용 하죠? – Jir