[Daily] 220215

하나·2022년 2월 15일
0

Daily

목록 보기
9/11
post-thumbnail

크롤링 코드가 almost 완성되어 간다.

이 스크립트를 만드는 동안 정말 끊임없는 디버깅을 진행했다.
그러면서 참 여러 가지 생각들을 많이 했다.

1-1. 왜 어려웠을까?

초반에 짰던 정말 '크롤링'기능만 하는 코드는 생각보다 그렇게 오래 걸리지 않았었다. bs4와 selenium을 이용해서 코드를 짜는 것은 쉬웠지만 계속해서 날 힘들게 했던 것은 '크롤링'기능 외에 부가적인 부분이었다. 더 빠르게 긁기 위해 멀티프로세싱을 처음 써봤고, 하드코딩을 하지 않기 위해 변동이 있는 부분은 다 파일로 빼서 한 번만 불러와서 작업하게 만들었고, 예전 데이터들을 긁을 때 필요한 코드와 매일 업데이트 시에 필요한 코드가 별도로 필요하고 매일 자동으로 돌리기 위한 스케줄링이 필요하다는 것도 모두 처음 알게 된 사실이다.

예를 들어 업데이트 코드를 짤 때에 오늘 날짜에 해당하는 기사를 크롤링 할 것인지, 그렇다면 크롤링 스크립트를 돌리는 그 시점 이후에 기사는 어떻게 할 것인지, 그렇다면 그 전날 기사들을 긁어야 하는지, 그렇다면 몇 시에 스크립트를 런하는게 좋을지, 저장은 날짜를 기준으로 해야 할지, 회사를 기준으로 해야 할지, 동일한 기사들은 어떻게 처리할지 등등. 결정해야 할 부분들이 계속해서 생겨나고 최대한 '좋은' 코드를 짜기 위한 고민이 계속 있었다. 물론 사이트가 크롤링을 막기 위해서 한 온갖 것들은 굳이 언급하지는 않겠다... 다만 이제 우리 집에서는 영원히 그 사이트에 접속하지 못한다는 점 ... ㅎ

1-2 왜 오래 걸렸을까?

사실, 그래봤자 웹사이트를 크롤링 하는 코드이기 때문에 단순한 편에 속하고 간단히 끝날 줄 알고 처음 코드를 짤 때 구조를 생각하지 않고 쭉쭉 짰던 것이 문제가 됐다.
코드를 짜면서 계속해서 변동 사항이 생기고, 저장 형태가 바뀌고, 작동 방식이 바뀌고, 새로운 변수 설정이 필요했는데 초반에 짠 코드는 정말인지 유동성이라고는 찾아볼 수 없는 형태였다.
이래서 깔끔하게 짜는구나, 이래서 함수와 인자를 적절하게 잘 써야 되는구나 뼈저리게 느낀 경험이었다. 구조가 망가져있으니 수정도 오래 걸리고 싹 갈아엎고 싶다는 생각이 저절로 들었다..

또 한 가지 원인으로는 테스팅이 있다. 문득 내가 테스팅에 쓰는 시간이 너무 긴 것 같다는 생각을 했다. 한번 돌릴 때마다 10~15분 걸리는 코드들이 은근 집중력을 깨고 시간이 낭비되는 느낌이다. 이 또한 내가 데이터의 형태를 정확히 알고 코드의 구조를 훤히 알고 있다면 척척 수정할 부분만 수정하고 테스트는 한두 번만 해보고끝내겠지만 그런 실력이 되지 못했기 때문에 너무 잦은 테스트가 독이 되었던 것 같다. 테스팅은 머릿속으로 좀 하고 디버깅도 최소한으로 하는 멋진 개발자가 되어야겠다고 생각했다.

1-3 좋은 크롤링 코드란?

한 사이트만이 아닌 여러 사이트를 최소한의 코드 수정으로 한 스크립트를 통해서 긁을 수 있다면 그게 최고의 크롤링 스크립트가 아닐까?

결론은 경험치 부족...

그래도 원하는 대로 작동하는 코드를 보면 뿌듯하다. 디버깅 실력을 키우고 업무용 노트북에 빠른 테스팅을 위한 GPU 설정을 얼른 해야겠다.

0개의 댓글