일부 URL을 기반으로 웹 사이트에서 일부 웹 페이지를 다운로드하는 크롤러를 파이썬에 작성했습니다. 나는 때때로이 프로그램이 "conn.getresponse()"에 멈추는 것을 보았다. 예외는 발생하지 않았으며 프로그램은 그곳에서 영원히 기다렸습니다.conn.getresponse() (httplib.HTTPConnection)에 매달린 것을 피하십시오.
conn = httplib.HTTPConnection(component.netloc)
conn.request("GET", component.path + "?" + component.query)
resp = conn.getresponse() #hang here
나는은 API 문서를 읽고는 (시간 제한을 추가하는) 것을 말한다 :
conn = httplib.HTTPConnection(component.netloc, timeout=10)
그러나, 그것은 나에게 연결을 "다시 시도"할 수 없습니다. 시간 초과 후 크롤링을 다시 시도하는 가장 좋은 방법은 무엇입니까?
예를 들어, 나는 다음과 같은 솔루션을 생각 해요 :
trials = 3
while trials > 0:
try:
... code here ...
except:
trials -= 1
암 I을 올바른 방향으로?
때로는 파이썬 라이브러리가 웹 브라우저와 다른 헤더를 해석하는 경우가 있습니다 ([이 질문] (http://stackoverflow.com/q/8527862/183066) 에서처럼). 따라서 웹 브라우저에서 동일한 URL을 열어 볼 수 있다고 생각합니다. – jcollado