본문 바로가기
DataScience/Crawling & Scraping

데이터 뽑아내기_ YouTube

by mkk4726 2022. 4. 12.

GetData.ipynb
0.40MB

* Colab 기준으로 작성되었습니다.

 

졸업과제를 진행 중에 유튜브에서 데이터를 추출해와야하는 상황이 생겨 진행했다.

처음엔 어떻게 뽑아낼지 몰라 막막했는데 이미 구현된 패키지를 이용하니 정말 별거 없더라.

 

썸네일, 동영상 캡쳐, 기타 메타 정보들을 추출해올 것이다.

그림1. 패키지 설치

먼저 필요한 패키지를 설치해준다. pytube를 이용해서 추출할 것이다.

그림2. 라이브러리

필요한 라이브러리들을 import 해준다.

그림3. YouTube 객체

ytube의 YouTube 객체를 이용해 데이터를 뽑아낸다. 

원하는 url를 넣고 YouTube 객체를 만든 후 아래 주석처리 되어있는 것처럼 데이터를 뽑아올 수 있다.

그림4. 썸네일 뽑아오기

해당 url의 썸네일을 뽑아오는 것인데, 유튜브의 썸네일은 지정된 url에 업로드 되어있다. 

그 url을 객체에서 따온 후 urllib을 이용해 다운받아주면 된다. 

그림5. 동영상 다운받기

그 다음으로는 동영상을 캡쳐할 것이다. 동영상 안의 내용을 담아내기 위함인데, 동영상 자체를 다루는 것보다 정한 개수만큼 동영상을 캡쳐해 내용을 담아내는 것이다. 정확히는 그 안의 프레임을 가져오는 것이다.

그렇게 하기 위해 동영상을 다운받는다. 사실 동영상을 다운받지않고 바로 할 수도 있는데 이게 속도가 훨씬 빨라 이렇게 진행했다. colab특성상 초기화하면 모든 정보가 사라지기 때문에, 이렇게 막 다운받고 초기화 시켜버리면 된다.

 

그림6. 동영상 프레임 가져오기

cv2의 videocapture를 이용해 캡쳐 또는 프레임을 따올 것이다. 그림 5의 맨 마지막 문장에 있는 코드가 videocapture 객체를 만드는 것이다. 

cap.read()는 한 프레임을 읽어오고 다음 프레임 여부를 알려준다. hasframe이 그렇다. 

이를 이용해 프레임별로 처리를 할 수 있다. 원하는 수의 프레임을 가져오기 위해 if 문을 이용해 처리해주었다.

이렇게 while 문을 돌며 프레임을 따온다.

 


코딩 실력을 늘리기 좋은 방법 중 하나는 여러 라이브러리를 다뤄보는 것이라 생각한다.

처음엔 되게 어렵게 보이고 막막했는데, 익숙해지면 쉬워지고 별거 아닌 것처럼 느껴진다.

이런 경험이 쌓이다보면, 모르는 라이브러리도 쉽게 익히는 깡따구(?) 또는 용기가 생기는 것 같다.

댓글