20220717 항해99 첫주차 WIL

codeing999·2022년 7월 17일
0

TIL/WIL

목록 보기
2/22


첫주차 공부시간 2등을 했었네 계속 열심히 할 생각이지만 이제 체력이 슬슬 딸리는 거같기도.. ㅋㅋ

항해99 시작 후 약 1주동안 한 것들을 간단히 요약해보겠다.

미니프로젝트

첫주차에는 미니팀프로젝트를 진행했는데
주제는 음악영상 게시글을 공유하고 서로 감상을 올리고 댓글에 좋아요를 누르는 기능 등이 있는 음악영상감상사이트 만들기로 정했다.

나는 그중에서 게시글을 작성하고, 게시글 목록을 불러오는 부분을 맡았다.
글을 작성할 때 유튜브 영상 링크를 입력하면 영상의 썸네일과 좋아요수를
크롤링하는 부분을 구현해야했는데
다른 사이트들은 쉽게 크롤링이 됐던 것에 반해 유튜브사이트는 크롤링이 쉽게 되지 않았다. 아무래도 크롤링 방지 기법이 있던게 아닌가 싶긴한데 내가 시도해보았던 것들을 적어 보겠다.
1. 브라우저를 통한 접근처럼 보이게 하기 위해서 요청에 헤더값들을 추가했다.
2. BeautifulSoup을 통한 정적크롤링만으로는 유튜브사이트는 css selector 요소가 제대로 따지지 않아서 구글링을 해보았는데 작년까지는 많은 youtube 크롤링 글들이 있었지만 그것들을 시도해보았을 때 현재는 잘 되지 않았다. 어떤 글에 의하면 작년에 유튜브에서 영상의 싫어요수를 비공개하기 시작하면서 어떤 구조가 변하여서 기존의 방법들이 안먹히게 된 것 같았다.
3. 그래서 Selenium을 통한 동적크롤링을 시도해보았다. Selenium의 기능 중에는 selector가 아닌 class값, id값, xpath값 등을 통해서도 크롤링할 수 있는 함수들이 있었기에 그것들도 시도해보았지만 되지 않았다.
4. 결국 썸네일의 경우에는 youtube영상의 썸네일 URL 구조를 파악한 후 개별 youtube영상의 ID값만을 추출해서 그 URL 구조에 그 ID부분을 변수로 입력해주는 방법으로 얻어오도록 구현하였다.
5. 또한, 영상의 좋아요수 같은 경우에는 구글링을 해보니 youtube API를 통해 직접 받아오는 방법이 있다는 것을 알게 되어 youtube API developer key를 받아서 받아오도록 구현했다.

크롤링은 실패하였지만 원하는 기능들은 구현해낼 수 있었다.
지금 다시 생각해보니 Selenium을 사용할 때 다른 인자들로 html 요소를 크롤링하려고만 시도해보았지 동적 크롤링이라고 할만한 부분을 시도한건 아닌 것 같았다.
또한 css selector값이 제대로 따지지 않은 부분도 지금 생각해보면 아마도 영상페이지 내에 iframe과 같은 다른 페이지가 삽입되어 있어서 그런게 아닐까하는 생각이 든다.
다음에 또 크롤링을 시도해볼 때에 이부분들을 보완해봐야겠다.

팀협업 부분에서는 깃헙을 거의 처음 사용해보았는데
우리팀이 각자가 구현해야할 파일을 따로 분리하지 않고 한 파일 내의 일부분씩을 구현하도록 해서 합치는 과정에서 충돌이 발생할 수 밖에 없는 구조였다.
실제 협업에서는 이게 완전 분리가 되는지는 모르겠지만 다음에 프로젝트를 할 때에는 좀 더 파일을 분리해야겠단 생각이 들었다.
다만 이러한 충돌이 많이 발생했기에 오히려 서로의 코드를 설명하면서 의견 교류를 하면서 작업할 수 있던 점은 경험이 되었다고 할 수 있을 것 같다.

JWT

JWT란?

JSON Web Token의 약자인데
이름에도 있듯이 JSON 포맷을 사용하고
주로 회원 인증과 두 개체 사이에서 정보 전달을 할 때 사용된다고 한다.

JWT의 구조


JWT 토큰은 .을 구분자로 해서 헤더, 내용, 서명 세가지 문자열로 구성되어 있다.

  • 헤더에는 토큰의 타입(JWT)과 해싱 알고리즘이 무엇인지 들어가 있다.
  • 내용에는 등록된 클레임, 공개 클레임, 비공개 클레임 세가지가 들어간다.
  • 서명은 토큰을 인코딩하거나 유효성 검증 시 사용하는 고유한 암호화코드이다.

API

API란?

Application Programming Inerface(응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

API 인증키

모든 사람들이 다 데이터베이스를 읽게 된다면 문제가 생길 수 있으니 데이터를 읽을 수 있도록 허가한 사람에게만 비밀 코드를 알려주는 것

profile
코딩 공부 ing..

0개의 댓글