본문 바로가기
파이썬

파이썬 Python urllib2.HTTPError : HTTP Error 503 : Service Unavailable on valid website

by º기록 2020. 12. 8.
반응형

Amazon의 Product Advertising API를 사용하여 특정 도서의 가격이 포함 된 URL을 생성했습니다. 내가 생성 한 하나의 URL은 다음과 같습니다.


링크를 클릭하거나 주소 표시 줄에 링크를 붙여 넣으면 웹 페이지가 정상적으로로드됩니다. 그러나 다음 코드를 실행하면 오류가 발생합니다.

url = "http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327"
html_contents = urllib2.urlopen(url)

오류는 urllib2.HTTPError : HTTP 오류 503 : 서비스를 사용할 수 없음 입니다. 우선, 웹 페이지가 성공적으로로드 되었기 때문에 왜이 오류가 발생하는지 이해할 수 없습니다.

또한 내가 알아 차린 또 다른 이상한 동작은 다음 코드가 때때로 언급 된 오류를 제공하고 때로는 제공하지 않는다는 것입니다.

html_contents = urllib2.urlopen("http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327")

이 동작이 어떻게 발생하는지 완전히 잃어 버렸습니다. 이것에 대한 수정이나 해결 방법이 있습니까? 내 목표는 URL의 html 내용을 읽는 것입니다.

수정

스택 오버플로가 코드에서 위에 나열된 아마존 링크를 rads.stackoverflow로 변경하기 위해 코드를 변경하는 이유를 모르겠습니다. 어쨌든 rads.stackoverflow 링크를 무시하고 따옴표 사이에 내 링크를 사용하십시오.

 

해결 방법

 

Amazon은 데이터에 대한 자동 액세스를 허용하지 않기 때문에 적절한 브라우저에서 전송되지 않았기 때문에 요청을 거부하고 있습니다. 503 응답의 내용을 보면 다음과 같이 표시됩니다.

Amazon 데이터에 대한 자동 액세스에 대해 논의하려면 api-services-support@amazon.com.


or our Product Advertising API at


광고 사용 사례.

이는 Python의 urllib 에 대한 User-Agent 가 분명히 브라우저가 아니기 때문입니다. 당신은 항상 User-Agent 를 속일 수 있지만, 그것은 좋은 (또는 도덕적 인) 관행이 아닙니다.

부수적으로 다른 답변에서 언급했듯이 requests 라이브러리는 Python의 HTTP 액세스에 정말 좋습니다.

 

참조 페이지 https://stackoverflow.com/questions/25936072

 

 

반응형

댓글