티스토리 뷰

728x90
반응형

 

 

 

 

urllib2.HTTPError: HTTP Error 301: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Moved Permanently

위와 같은 오류라거나 아래와 같은 오류를 경험하신 분이라면 이번에 소개 드릴 해결책으로 해결할 수 있으리라 생각합니다.

Traceback (most recent call last):
...
requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

 

해결법 #1.

아래와 같이 requests 모듈에서 get 함수를 사용할 때 headers 에 user-agent 를 추가하는 방법이 있습니다.

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/605.1.15',
}
response = requests.get(url, headers=headers)

하지만 만약 이미 이렇게 했는데도 안된다고 한다면 아래와 같은 방법을 시도해보세요.

 

해결법 #2.

아래 방법은 allow_redirects 옵션을 False 로 변경하여 만약 response 결과가 302 (Redirection)이 나온다면 따라가지 말게 한 것입니다.

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/605.1.15',
}
response = requests.get(url, headers=headers, allow_redirects=False)

 

이 경우에는 Redirection이 무한히 발생하여 최대 Redirection 가능 횟수를 초과했을 때 발생하는 에러입니다. 그래서 일반적인 해결법으로는 allow_redirects 옵션을 False 로 하는 방법이 있는데, 상황에 따라서 redirection이 필요할 때는 True로 바꿔주셔야 할 것입니다. 무한 Redirection을 방지할 때만 False 로 하시면 될 것 같습니다.

첫 번째 해결법은 가끔 가다 웹사이트에서 python 의 user-agent를 차단하는 경우가 있는데 이럴 때 user-agent를 웹브라우저의 것으로 인식하게 하여 정상적인 결과를 얻을 수 있는 경우의 해결법입니다.

728x90
반응형
댓글