Youtube의 댓글 스크래핑

개요



코멘트의 부모 - 자식 관계를 이용한 비디오 공유 사이트에서 인터넷 괴롭힘 코멘트 감지에서는 Youtube에 게시 된 코멘트를 대상으로 괴롭힘 코멘트를 검출합니다. 이 연구를 위해 Youtube 주석 스크래핑 도구 Youtube comment scraper를 만들었습니다.

Youtube comment scraper



그렇듯이 Youtube의 동영상 재생 페이지를 스크래핑하여 게시 된 댓글을 얻습니다. 패키지는 npm에 등록되어 있으므로 npm 명령으로 설치할 수 있습니다.

독립형으로 사용하는 경우,
$ npm install -g youtube-comment-scraper

그렇다면 scraper 명령을 사용할 수 있습니다. 이 명령의 사용 방법은
Usage: scraper url [options]

   url
        URL for a Youtube video page or video ID.

   --help, -h
        Displays help information about this script

   --version
        Displays version info

즉, 요컨대 Youtube의 동영상 재생 페이지의 URL 또는 동영상 ID를 전달하면 좋다.
예를 들어,
# URLを渡す場合.
$ scraper "https://www.youtube.com/watch?v=vN4U5FqrOdQ"

# IDを渡す場合
$ scraper vN4U5FqrOdQ

등이 된다. 출력은 JSON 형식으로 다음과 같은 형식입니다.
{
  "id": "動画 ID",
  "channel":{
    "id": "チャンネルの ID",
    "name" : "チャンネル名"
  },

  "comments": [
    {
      "root": "親コメント",
      "author": "このコメントの投稿者",
      "author_id": "投稿者のID",
      "like": "いいねスコア(下記参照)",
      "children": [
        {
          "comment": "親コメントへのリプライ",
          "author": "リプライの投稿者",
          "author_id": "投稿者のID",
          "like": "いいねスコア",
        },
        ...
      ]
    },
    ...
  ]
}

좋아요 점수는 각 코멘트에 주어진 개수에서 개수를 뺀 스코어입니다.

또한 각 동영상에는 여러 개의 상위 주석이 있고 각 상위 주석에는 여러 개의 응답이있을 수 있습니다.



모듈로 사용


var scraper = require("youtube-comment-scraper");

다른 프로그램에서 호출하여 사용할 수도 있습니다. (이 경우 로컬로 설치)이 모듈에서 제공하는 함수는 다음 두 가지입니다.

scraper.comments(url)



주어진 동영상 재생 페이지의 URL 또는 동영상 ID를 기반으로 스크래핑을 수행합니다.
  • 인수:
  • url : 동영상 재생 페이지의 URL 또는 동영상 ID.

  • 반환값:
    비동기 스크래핑 Promise을 반환합니다. then 방법을 사용하여 결과를 검색 할 수 있습니다. (아래 예 참조)

  • scraper.channel(url)



    채널 ID를 기반으로 채널 소개 페이지를 스크래핑합니다.
  • 인수:
  • id: 채널 ID.

  • 반환값:
    비동기 스크래핑 Promise을 반환합니다. then 방법을 사용하여 결과를 검색 할 수 있습니다.

  • scraper.close()



    종료 처리. 스크래핑에 사용 중 PhantomJS을 종료합니다. 마지막 스크래핑이 끝난 후에이 함수를 호출하지 않으면 메인 프로세스가 끝나지 않을 수 있습니다.

    이용 예



    예를 들어 scraper 명령의 호출 부분을 게시합니다.
    var scraper = require("youtube-comment-scraper");
    
    scraper.comments(some_url).then(function(res) {
      // 取得したコメントをJSON形式に整形して出力.
      console.log(JSON.stringify(res));
    
      // 終了処理.
      scraper.close();
    });
    

    좋은 웹페이지 즐겨찾기