Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【コピペで出来るnode.js】youtubeでキングヌーの白日を自動で再生してみた

f:id:yukiyukiponsu:20190410154007j:plain

 

こんにちは、ゆきぽんずです。

 

「キングヌー」を「キングガン」と間違えて、友達に笑われたことを一生根に持っている心の狭い人間ことゆきぽんずです。

 

そんな因縁のキングヌーですが「白日」という曲が本当に素晴らしく毎日聴いています。いつもはスマホyoutubeで聴いているのですが、毎回youtubeを開いて動画を探し、クリックして再生するのがめんどくさくなり、何とか自動化できないかなーと考え、今回はnode.jsを使って実現しようと思いました。

 

要はwebスクレイピングをするのですが、pythonではなくnode.jsを選んだ理由としては、pythonばかり触りすぎて頭が「pythoner」になっていたので、他の言語で実装してみたろと考えた結果であります。

 

こんな感じのことが出来るようになります。

*起動~再生まで時間がかかるので見やすいように編集して表示しています。

完成品

完成品

 

作りたくなってきたでしょう?( *´艸`)

環境

PC : windows

 

node.jsが既に入っているものとして話を進めていきます。

node.jsをこれから入れる人であれば、このサイトを参考にすればできると思います。(自分も参考にしました)macは知らん

Windows版 Node.js環境構築方法まとめ

 

node.jsでwebスクレイピングをするときは、puppeteer(ぱぺったー?)がオススメです。なんとですね。node.jsが入っている人であれば

puppeteerのインストール方法

npm install puppeteer

これだけでインストールできます(*このインストールめっちゃ重いんで気をつけてください : ちなみに筆者は40分かかりました( ;∀;))。

 

おおっと、その前に今回作成するプログラムをこんな感じで一つのフォルダにまとめてくださいね。

フォルダの位置関係

package-lock.json, package.json, node_modulesは

npm initのインストール方法

npm init

コマンドプロンプトであげると生成されます。(実行するファイルがあるフォルダをカレントディレクトリにした後にnpm initをしてあげてください)

下のような感じ

カレントディレクトリ

それではお待ちかねのソースコードですわいな

ソースコード

 blogscraping.js

 //dockerを使ったpuppeteerを使う
 //webを自動スクレイピングするために使うモジュール
const puppeteer = require('puppeteer');
(async () => {
  //ブラウザを立ち上げる
  const browser = await puppeteer.launch({
    headless:false,
  });
  const page = await browser.newPage();
  //ブラウザの大きさを指定
  await page.setViewport({width: 1600, height: 950});
  //行きたいサイトのurlを指定して飛ぶ
  await page.goto('https://www.youtube.com/?gl=JP&hl=ja');
  //検索欄にキングヌー 白日と入力
  await page.type("#search", "キングヌー 白日");
  //Enterキーをクリック
  await page.keyboard.press("Enter");
  //画面遷移を明示的に1秒待つ
  await page.waitFor(1000)
  //広告を除いて1番目に自分が一番欲しい検索結果が来るはずなのでそのままクリック
  await page.waitForSelector('a[href^="/watch?v="]');
  await page.click('a[href^="/watch?v="]');
})();

たったこれだけで可能なんだわいな。プログラムはコメント文を細かく書いているので理解できると思います。ただ、そのほかにここ何でこうなるんだろうと思った時は、自分でググるなり、私に質問してください。

 

これを

プログラムの実行方法

node blogscraping.js

で実行してあげると完成品と同じような動作をするものが作れます!ほんと便利な時代になりましたよね。

 一応実行方法例をのせます。

プログラム実行方法

 

以上が今日の内容です。

 

 今日もブログを読んでくださり誠にありがとうございます!

 

少しでも参考になれば幸いです。

 

では!