study

Google Trends 데이터 요청 에러: 429

prezh 2024. 11. 23. 23:48

 

실행을 여러번 시도했더니, 어느 순간부 이러한 오류가 발생하면서 실행이 되지 않는 문제가 발생했다.

찾아보니, 이 에러는 Pytrends 라이브러리를 사용하여 Google Trends 데이터를 요청하는 과정에서 발생한 에러이다. 구체적으로, 에러 메시지에서 나타난 429 상태 코드는 "Too Many Requests"를 의미하며, 이는 사용자가 너무 많은 요청을 짧은 시간 내에 보냈을 때 Google에서 차단한 결과이다.

ip를 바꾸어서도 실행하고, 여러 방법으로 시도하거나, 시간을 좀 더 두고 실행해야 한다.

 

원인에는 세 가지 정도가 있다.

  1. 요청 과다
    • Google Trends API는 사용자가 특정 시간 내에 보낼 수 있는 요청 수에 제한을 두고 있다. 이 제한을 초과하면 Google은 429 응답을 반환하며 더 이상 데이터를 제공하지 않는다.
  2. 자동화 탐지
    • Google은 과도한 자동화된 요청을 탐지하여, 이를 제한하거나 차단할 수 있다. Pytrends는 일반적으로 브라우저 요청과 비슷하게 작동하지만, 지나치게 빈번한 요청은 자동화 요청으로 간주될 수 있다.
  3. IP 주소 제한
    • 동일한 IP 주소에서 반복적으로 요청을 보낼 경우 Google이 그 IP를 일시적으로 제한할 가능성이 있다.

 

 

해결 방법은 다음과 같다.

문제를 해결하기 위해 다양한 방법을 시도했다. 다시 실행이 되다가도 다시 같은 오류가 발생할 수 있어, 문제가 완전히 해결되지는 않는다.

 

  • 요청 간 딜레이 추가
    • Pytrends의 RateLimiter를 사용하여 요청 간에 딜레이를 추가하는 것이 가장 일반적인 해결 방법이다.

예제 첨부

 

  • VPN 또는 프록시 사용
    • 동일한 IP로 요청을 계속 보낼 경우 제한될 가능성이 있으므로, VPN 또는 프록시를 사용하여 IP를 변경하면 도움이 된다.
    • Pytrends는 프록시 설정을 지원하므로 다음과 같이 적용할 수 있다. 
    •  
      pytrends = TrendReq(hl='en-US', tz=360, proxies=['http://IP:PORT'])
  • 요청 수 줄이기
    • 짧은 시간 내에 너무 많은 요청을 보내지 않도록, 요청 횟수를 조정하고 필요한 데이터만 요청하도록 코드를 수정한다.
  • 새로운 세션 시작
    • Google이 세션 단위로 요청을 관리할 수 있으므로, 요청이 막혔을 때 새 세션을 생성하면 문제가 해결될 수도 있다.
  • 시간 경과 후 재시도
    • Google은 일정 시간이 지난 후 요청을 허용할 수 있다. 따라서 일정 시간(30분~1시간) 대기한 후 다시 요청하면 해결되는 경우가 많다.

'study' 카테고리의 다른 글

검색량을 이용한 주가예측  (0) 2024.11.20
lstm을 이용한 주가 예측  (0) 2024.06.19