Programming/Python

유튜브 실시간 방송 댓글 크롤링

remake 2022. 11. 8. 17:40

유튜브의 실시간 방송 댓글 크롤링하는 방법

 

유튜브 실시간 영상에서 댓글을 가져오는 방법을 알아보겠습니다.

 

필수 패키지 설치

 

먼저 필요한 패키지는 pafy와 youtube_dl, 그리고 pytchat입니다.

 

pip install pafy
pip install youtube_dl
pip install pytchat

 

3개를 모두 설치해주시면 됩니다.

 

이후 pafy를 통해서 라이브 방송의 정보를 긁어오겠습니다.

import pytchat
import pafy #유튜브 정보 
import pandas as pd

pafy.set_api_key('Api key')

video_id = '비디오 영상'

v = pafy.new('video_id')

title = v.title
author = v.author
published = v.published

영상 아이디가 필요한데요.

 

실시간 영상의 v= 다음의 주소를 복사 붙여넣기 하시면 됩니다.

 

이렇게 하면  순서대로 제목/소유자/만든일자 순서대로 나옵니다.

유튜브 실시간 채팅 크롤링

채팅은 pytchat을 통해서 크롤링할 수 있는데요.

 

기본 문법은 아래와 같습니다.

chat = pytchat.create(video_id=video_id)
while chat.is_alive():
    for c in chat.get().sync_items():
        print(f"{c.datetime} [{c.author.name}]- {c.message}")

실제로 댓글을 잘 긁어오는 것을 알 수 있습니다.

이를 기반으로 pandas를 활용해서 저장할 수도 있습니다.

그리고 해당 작업중에 youtube_dl 관련 like 에러가 발생하는데요.

 

이 경우에 영상에서 좋아요 표시를 안하면 발생하는 에러인데요.

 

backend_youtube_dl.py파일을 여신 다음

 

53과 54행에 위치한 like와 dislike를 주석 처리해주시면 정상 재생 됩니다.

Traceback (most recent call last):
  File "C:/python/yt_comment.py", line 9, in <module>
    v = pafy.new(video_id)
  File "C:\python\lib\site-packages\pafy\pafy.py", line 124, in new
    return Pafy(url, basic, gdata, size, callback, ydl_opts=ydl_opts)
  File "C:\python\lib\site-packages\pafy\backend_youtube_dl.py", line 31, in __init__
    super(YtdlPafy, self).__init__(*args, **kwargs)
  File "C:\python\lib\site-packages\pafy\backend_shared.py", line 97, in __init__
    self._fetch_basic()
  File "C:\python\lib\site-packages\pafy\backend_youtube_dl.py", line 53, in _fetch_basic
    self._likes = self._ydl_info['like_count']
KeyError: 'like_count'

 

오늘은 간단하게 유튜브 라이브 방송의 댓글을 긁어오는 방법을 알아보았는데요.

 

필요할 경우 잘 사용해보시기 바랍니다.

 

감사합니다.