728x90
간간히 필요한 데이터를 수집하기 위해 크롤러를 구현 해 놓은게 있다.
네이버 뉴스를 크롤링 하는 것인데..
3개월 만에 다시 사용하려고 하니, 오류가 발생했다.
더보기
IndexError : list index out of range
코드에 list의 첫번째 데이터 [0]을 요청했는데, 위와 같은 오류가 발생한다면
필히 데이터를 받아오지 못한 오류다.
더 정확한 확인을 위해 BeautifulSoup의 연결상태를 확인했다.
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/에 들어가서 본인의 정보를 그대로 붙여넣기 하면 됩니다.
.
.
User-Agent 정보를 주는 것으로 해결할 수 있었다.
반응형
'코딩 > Error' 카테고리의 다른 글
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 오류 (0) | 2021.03.03 |
---|---|
'SMOTE' 설치 오류 (0) | 2020.12.22 |
Graphviz 환경변수 오류 (0) | 2020.12.10 |
댓글