Project_FIFA (feat.crawling)

민성철·2022년 12월 26일
0

데이터 수집

데이터를 수집하기 위해 공식사이트 외 다른 포털사이트, 비공식 애플리케이션 등 구글링을 해본 결과 모두 데이터를 수집하기 위해 Open Api를 알아봤으나, 필요데이터 관련 api는 제공되지 않아 크롤링을 진행하여 수집한 것으로 확인되었습니다.

따라서 이번 프로젝트도 동일하게 크롤링으로 데이터를 수집했습니다.

처음 프로젝트 글을 기재하고서 많은 시간이 지났지만 정확히 22.12.20(화) 부로 데이터 수집(크롤링)이 끝이 났습니다.

원래는 좀 더 일찍 끝났어야 할 작업이지만, 처음 필요한 데이터를 정의하고 정의한 데이터를 크롤링하는 데에 있어, 첫 크롤링이 끝나갈 때쯤 부족한 것을 알아차리고 추가하는 작업을 2번 3번 반복하다 보니 이렇게 지연이 되었습니다.

데이터 수집(크롤링) 작업은 총 3명의 팀원 중에서 저 포함 2명이서 진행했습니다.
1명은 프론트(웹)과 환경구축, 백엔드 작업등을 하고 다른 한 명의 팀원 1명과 저는 각각 맡은 데이터를 크롤링했습니다.
(저는 선수 스탯 위주로 크롤링, 팀원 1명은 팀컬러를 종류별로 크롤링)

위 작업을 할 때는 아무래도 익숙하고 상대적으로 편한 주피터 노트북(jupyter notebook)으로 진행했으며, 진행이 완료된 후에는 export화 작업을 진행한 뒤에 git에 정리했습니다.

코드

코드는 전체코드를 올릴까 고민하였지만, 아무래도 전체코드를 공유하기보다는 위 작업을 하면서 유용했던 코드들을 공유하려고 합니다.

  • tqdm : 루프에 스마트 진행률 표시기를 즉시 표시합니다. 모든 반복 가능 항목을 감싸기만 하면 완료됩니다!
    예 ) for i in tqdm(iterable)
    위 함수는 오래 걸리는 작업을 진행할 때 사용하면 진행도를 확인할 수 있는 점에서 굉장히 유용한 함수입니다.
  • xpath : 크롤링할 때 주로 필요한 데이터의 위치? 등을 찾기 위해서 사용했으며, css, html, js를 잘 알고 있다면 굳이 xpath보다는 다른 정보로 위치를 찾을 수 있습니다.
  • time.sleep : 시간을 사용자가 지정한 만큼, 초(second) 단위로 지연시키는 함수입니다.
    아무래도 많은 양의 데이터를 긁어오다 보니 그만큼 많이, 빠르게 접속할 텐데 시간지연을 시키지 않았다면 트래픽 이슈로 ip가 차단될 우려를 예방할 수 있는 함수입니다.
  • 이건 크롤링뿐만 아니라 다른 코드를 작성할 때도 유용할 것이라 생각 듭니다. 바로 try, except, finally 함수입니다.
    try로 어떠한 코드를 진행할 때 여러 가지 경우의 수로 발생된 오류를 except에 정의할 수도 있으며, 이번 크롤링에서는 원하는 데이터가 없을 때 오류메세지와 함께 정지되는 대신에 원하는 데이터가 없다면 특정값을 대신 넣도록 하였습니다.

느낀점

이번 작업을 하면서 가장 크게 느꼈던 점은 첫 번째로 작업에 지연이 되었던 주요 문제인 "제대로 된 문제정의"입니다.
아무래도 처음 하는 프로젝트이다 보니 많이 미숙하기도 하고, 주어진 시간안에 마무리를 지으려다 보니 성급하게 진행했던 것이 문제가 된 것 같았습니다.
앞에서 문제가 제대로 정의되지 않는다면 분명 또 다른 문제가 발생되고 시간이 지연된다고 느끼면서도 한편으로는 너무 문제정의에만 시간을 쏟고 진행을 하지 않으면 그것또한 문제가 된다고 생각하여 정말 어떻게 보면 간단하면서도 어려운 거라고 생각이 들었습니다.

그리고 두 번째는 jupyter notebook(.ipynb)에서 python(.py)로 변형시키며 export 시키는 작업을 함수화 시키면 된다고 단순하게 생각했던 게 완전히 헛된 생각이란 걸 느꼈을 때였습니다. 같은 python이라도 실제로 실행하는 데에 있어 다른 방식으로 코드를 수정했어야 했습니다.
때문에, 직접 해보기 전까지는 멋대로 정의하다간 큰코다친다는걸 느꼈습니다.

또한, 작업하면서 들었던 의문점은, 이렇게 오래 걸리는 작업인데 가장 애용하는 애플리케이션에서는 어떻게 최신화가 이렇게 빠른 것인가 하는 의문점과 아직 실력이 많이 부족하다는 점 또한 느끼면서 아직 공부할 것도 많고 열심히 해야겠다는 계기가 생겼던 작업이었습니다.

지금 기재하는 글도 크롤링이 끝난 지 한참 지난 시간에 작성되었던 이유는 다른 프로젝트?를 병행하고, 타이트하게 하지 않았음을 느꼈습니다.

때문에 앞으로는 좀 더 타이트하게 작업하며 연말을 잘 마무리해보려고 합니다.

profile
ENTJ-A

0개의 댓글