ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 첫 번째 과제: Crawling(2)
    개인 프로젝트 A 2023. 12. 10. 22:00

    오늘은 데이터 크롤링을 하다가 마주친 몇몇 문제들에 대해 포스팅하고자 한다. 매일 개인 프로젝트에 시간을 조금씩 내보려 했지만 취업준비가 생각보다 녹록지 않아서 시간을 거의 내지 못했다. 그래도 멈추는 것보다는 움직이는 게 낫지 않은가?

     

    첫 번째 어려움은 깔끔하게 원하는 텍스트를 가져올 수 없다는 점이었다. soup.text를 통해 내용을 가져오면 <br/> 등 특수하게 적용되어야 할 기능들이 누락된 채로 텍스트가 반환되었다. 그렇다면 원하는 부분을 찾아서 가져온 후 후처리를 해줘야 하는데, 부모자식 관계가 복잡하게 얽혀있어서 원하는 부분을 찾기 위한 탐색 최솟값을 찾는데 애를 먹었다. 다행히 논리적인 연산 과정을 찾아 해결했다.

     

    두 번째 어려움은 Bot Detection이었다. 최적화를 하고 난 뒤 일정 시간이 지나면 자꾸만 Bot Detection에 걸리는 것을 발견했다. 이전에 최적화되지 않았던 코드에서는 이런 문제가 발생하지 않았다는 점을 기억해냈다. 아마도 같은 아이피에서 사이트 이동이 비상식적으로 빠르면 제재를 가하는 방식이라는 생각이 들어 time.sleep(x)을 추가해 해결했다. x가 5일 때는 여전히 Bot Detection에 걸렸으나 x가 10인 경우 걸리지 않았다. 그러나 매 iteration마다 10초씩 추가적으로 소모하는 것은 매우 비생산적이라는 생각이 들었다. 그래서 Bot Detection에 걸리는 데 소요하는 시간을 대략적으로 알아본 후, 일정 iteration마다 드라이버를 다시 시작하는 방식으로 변경한 결과, Bot Detection에 걸리지도 않고 빠르게 작업을 완료할 수 있었다.

     

    나중에 Bot Detection을 회피하는 방법에 대해 검색해본 결과 다양한 방법들이 있음을 알 수 있었다. 

    How to Avoid Bot Detection with Selenium - ZenRows

    간단한 방법으로 해결되지 않거나 효율성의 문제에 봉착할 경우 참고하면 좋을 듯하다.

     

    다음 과제는 haystack을 이용하여 머신러닝 파이프라인을 간단하게 구현해보는 것이다. 사실 학습할 데이터가 없기에 어려운 부분은 없을 것 같다.

    '개인 프로젝트 A' 카테고리의 다른 글

    첫 번째 과제: Crawling  (0) 2023.10.11

    댓글

Designed by Tistory.