파이썬/크롤링하기

[파이썬 크롤링] 유튜브 댓글 crawl #1 google api client 라이브러리 위해 api-key 설정하기

mcdn 2022. 11. 10. 14:07
반응형

 

Selenium 과 같은 크롤링 도구 없이 API를 활용해서 유튜브 댓글을 크롤링해 보자. 

코드는 Colab에서 진행했다. 

 

목차 

I. API key 설정하기 (이번 글) 

 

1. 필요한 라이브러리 확인 및 설치 

사용하는 라이브러리는 다음과 같다. 

import pandas as pd
import datetime
import scrapetube
from googleapiclient.discovery import build

import warnings
warnings.filterwarnings('ignore')

 

따로 설치해야 하는 라이브러리는 scrapetube 정도이다. 

아래 코드로 설치한다. (코랩 기준)

!pip3 install scrapetube

!pip3 install scrapetube

scrape tube의 깃헙 주소는 다음과 같다. 

https://github.com/dermasmid/scrapetube

간단하게 채널의 비디오 가져오기, 플레이리스트의 동영상 목록 가져오기가 있다. 

 

이 scrapetube를 활용해서 비디오 목록을 가져올 건데, 그리하려면 먼저 채널의 고유 id를 가져오는 작업이 필요하다. 

따라서 googleapiclient의 build에서 사용될 API key를 세팅해야 한다. 

 

 

2. API key 설정하기 

API key는 구글 developer 환경에서 설정해서 가져온다. 

과정은 다음과 같다. 

 

1. 구글 클라우드 플랫폼에 구글 이메일 계정으로 로그인한다. 

https://console.cloud.google.com/projectselector2/apis/dashboard?supportedpurview=project 

 

Google 클라우드 플랫폼

로그인 Google 클라우드 플랫폼으로 이동

accounts.google.com

 

 

2. 위 화면에서 오른쪽 끝에 있는 '프로젝트 만들기'를 클릭한다. 

새 프로젝트 이름은 상관없고, 조직 없음 옵션으로 만든다. 

 

 

 

 

3. 만들고 난 후 새 화면에서는 API 및 서비스 밑에 여러 그래프가 나타난다. 

그리고 위쪽에 'API 및 서비스 사용 설정' 파란 글씨 버튼이 나타난다. 

이걸 클릭한다. 

 

 

 

 

4. 스크롤을 아래로 내리면 'Youtube'섹션에 Youtube Data API v3이 있다. 

 

배너를 클릭하고 '사용'을 클릭한다. 

 

 

 

 

5. 이제 Youtube Data API v3을 사용할 수 있다. 

하지만 실제 활용하려면 사용자 인증 정보가 필요하므로 위쪽의 파란 버튼 '사용자 인증 정보 만들기'를 클릭한다. 

 

 

 

 

6. API는 자동으로 선택될 것이고 엑세스할 데이터에 공개 데이터를 고른다. 

 

 

 

 

 

7. 그러면 시간이 2~3분 흐르고 API 키가 나올 것이다. 

이 API키는 사용자 인증정보 페이지에서도 확인할 수 있다. 

 

 

 

3. API key 활용해서 video id를 가져와보기

API key를 이제 알게 되었으니 코드에 직접 적용해본다. 

 

아래는 전체 코드. 

 

 

# api_key = 'api_key'
api_key = 'AIza_________________________________k' # CHANGE ME
youtube = build('youtube', 'v3', developerKey=api_key)

search_response = youtube.search().list(
    q = 'Jennierubyjane Official', # CHANGE ME
    order = 'relevance',
    part = 'snippet',
    maxResults = 10,
    ).execute()

channel_id = search_response['items'][0]['snippet']['channelId']

videos = scrapetube.get_channel(channel_id)

api_key 변수에 아까 생성한 api key를 'string'으로 집어넣는다. 

그리고 q = 'Jennierubyjane Official' 부분에 데이터를 끌어오고 싶은 채널명을 넣는다. 

나 같은 경우 비디오가 12개 올라온 블핑 제니 채널을 사용했다. 

 

 

 

video_ids = []

for video in videos:
    video_ids.append(video['videoId'])
print('channel: ', channel_id)
print(video_ids)

그리고 video_ids에 담긴 videoid들을 프린트해보면 

총 12개, 채널에 올라온 모든 비디오들이 올라온 것을 알 수 있다. :) 

 

 

import pandas as pd
import datetime
import scrapetube
from googleapiclient.discovery import build

import warnings
warnings.filterwarnings('ignore')

# api_key = 'api_key'
api_key = 'AIza_________________________________k'
youtube = build('youtube', 'v3', developerKey=api_key)

search_response = youtube.search().list(
    q = 'Jennierubyjane Official',
    order = 'relevance',
    part = 'snippet',
    maxResults = 10,
    ).execute()

channel_id = search_response['items'][0]['snippet']['channelId']

videos = scrapetube.get_channel(channel_id)

video_ids = []

for video in videos:
    video_ids.append(video['videoId'])
print('channel: ', channel_id)
print(video_ids)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형