본문 바로가기
코딩/Error

Python Crawling 차단(데이터 못 받는) 오류

by 세자책봉 2020. 9. 5.
728x90

오랜만에 시도한 크롤링 근데 오류?

간간히 필요한 데이터를 수집하기 위해 크롤러를 구현 해 놓은게 있다.

 

네이버 뉴스를 크롤링 하는 것인데..

 

3개월 만에 다시 사용하려고 하니, 오류가 발생했다.

더보기
IndexError : list index out of range

코드에 list의 첫번째 데이터 [0]을 요청했는데, 위와 같은 오류가 발생한다면

 

필히 데이터를 받아오지 못한 오류다.

 

더 정확한 확인을 위해 BeautifulSoup의 연결상태를 확인했다.

 

HTTP 500 Error, DB접속 실패 오류

500 에러 메세지를 출력하는 경우는 아래와 같다.

 

  • 서버 통신의 Timeout 시간 지연 오류
  • 서버 트래픽 과부하
  • 서버 언어의 구문 에러 등

구글링을 통해 적당 해 보이는 해결방안을 찾아서 실행 해 보았다.

 

1. Time Delay 추가

Selenium으로 Webdriver를 사용하는 동적 환경과 달리 Requests를 사용하는 환경은 정적이기 때문에

Time Delay와 큰 관련이 없어 보였지만 혹시나 하는 마음에 시도해 보았다.

혹시나 했더니 역시나

2. 유저 에이전트 정보를 담아서 요청 보내기

파이썬 크롤링 차단, 우회 등으로 검색을 해 보니, 크롤링 서버에서 서버를 보호하기 위해 봇(Bot)으로 의심되는 접속 Agent에 대해서는 차단을 시킨다는 내용을 찾을 수 있었다.

쉽게 얘기하면, 사람인 척 하는 것이다.

더보기

headers = {'User-Agent': '에이전트 정보'}

req = requests.get(url, headers = headers)

위 코드를 추가시켜 준다.

에이전트 정보는 http://www.useragentstring.com/에 들어가서 본인의 정보를 그대로 붙여넣기 하면 됩니다.

 

UserAgentString.com - unknown version

 

www.useragentstring.com

.

.

해결

User-Agent 정보를 주는 것으로 해결할 수 있었다.

반응형

댓글