크롤링 (4) 썸네일형 리스트형 더 우아한 크롤러를 위해 / 분산 크롤러 / 크롤러 아키텍쳐 본 게시물은 다양한 외부 소스들을 종합해서 정리하고 기록하기 위한 글입니다. 일부분 필자의 의견이 섞여있으므로 정확한 내용을 알고싶으시다면 하단의 출처를 참고해주세요. 크롤러? 뭐 더 공부할게 있나.. 내가 크롤러에 관심을 갖게 된 후, 주변에서의 크롤링 기술에 대한 인식이 영 긍정적이지만은 않다는 것을 안 것은 불과 몇 주전 이었다. 대기업들한테 가서 크롤링 이야기하면 그래요, "크롤러? 그거 쉬운걸 뭐 굳이.." - 기업초청 세미나에서 A 빅데이터 회사 대표이사 상당한 규모의 정보 수집, 분석 능력이 있는 한 회사의 대표이사가 이야기했을 정도면 얼마나 답답했을까! 모든 기술에는 기반이 필요한 법이고, 그 기반은 결국 누군가가 다져놓지 않으면 기술은 성립되지 않는다. 뭐, 이 기술이 중요하고 어떤 기술.. Selenium 크롤링을 해보며 느낀 점 Selenium의 장점 실제 브라우저를 실행 시켜서 돌아가기 때문에, 웹페이지에 구현된 정적인 페이지뿐만 아니라, 동적인 페이지까지 긁어낼 수 있다. 그래서 느리다. 디버깅 시, 브라우저에서 눈으로 확인하기 때문에 크롤링 과정을 확인할 수 있다. 유용한 메소드들이 많다. Selenium의 단점 느리다. 너무 느리다. 진짜로 느리다. 만약 자신의 컴퓨터 성능이 그리 좋지 못하다면, Selenium 크롤링 테스트를 하면서 화딱지가 날지도 모른다. 실제 브라우저를 가동하다보니 그만큼 리소스를 잡아먹고, 에디터 리소스와 이것저것 생각하다보면 자연스럽게 import requests 라며 코드를 바꾸고 있을지도 모른다. 앞으로 크롤링은 이렇게 Only Selenium은 확실히 아니다. 분명히 아니다. request.. Bot Detection / 크롤러 차단 / 크롤러 우회 #2 디버깅의 필요성2 계속 차단되는 포인트가 뭘까.. 여러가지 시도를 해봤다. 일단 구글링과 StackOverflow를 뒤져가면서 알아낸 사실은 1. Selenium Webdriver의 Preference는 Runtime 중에 (Webdriver가 Instance로 만들어진 상태)는 변경할 수 없다. 2. Proxy IP 또한 마찬가지로 바꿀 수 없다. Firefox의 경우 webdriver에서 about:config로 접속해서 바꿀 순 있긴 하지만, 영 찜찜.. 1번의 경우는 header의 User-Agent 필드 값을 사전에 List로 정의해서 연결할 때마다 다른 User-Agent를 갖도록 위장하기 위해서 시도했었는데, Selenium을 사용하는 경우 불가능하다고 한다. 2번의 경우도 마찬가지, 크롤링.. Bot Detection / 크롤러 차단 / 크롤러 우회 #1 에이, 너가 그런거 아니지? 그냥 좋은 로직으로 크롤링만 하면 만사인줄 알았는데, 고비가 하나 더 있었다. CLI 환경에서 죽어라 크롤러를 돌리는데 자꾸 이상한 타이밍에서 Response를 못받아오거나, Connection Refuse가 발생해서 크롤러가 죽는 경우가 있었다. 내가 웹사이트 구조를 잘 이해하지 못해서 어디선가 Exception이 발생하는 건가.. 했지만, try / catch로 잡아보려고 해도 Exception은 발생하지 않았다. URL 문제인가? 라고 생각하면서 주소창에 여러가지 주소를 빠르게 넣어보며 웹페이지를 돌아 다니던 중, 갑자기 리다이렉션된 페이지. 정말 흠칫했는데 동시에 아차 싶었다. 지금까지 연습해온 크롤링은 정말 소규모에 불과했고, .. 이전 1 다음