ページの取得なんてwgetで楽勝と思っていたが出来なかったので代替案を検討

きむら @bokukimura です。

ドラマや映画などエンタメ的なコンテンツの情報を収集するサイトを作って、VODのアフィリエイトリンクを貼って、放置でウハウハするぜ。
と思って、妄想丸出しで頑張ってますけど、そんな言うほど簡単じゃないですね。。。

リーンスタートアップにならって、まずは、最小構成の機能でリリース。
そしてバージョンアップを繰り返して、理想の状態に持っていく。その流れで進めるべく検討中です。

最小構成の機能って何よ?

ってことで、このサイトの存在意義を考える。
「ドラマ動画を見たい人に、配信中のサイトをリスト化して紹介するサイト」これしかない。
これだったら、VODアフィリをごく自然に組み込めるから。

必要な機能は次の3つ。もちろん、全部自動が好ましい。
・ドラマの情報を取得
・動画配信サイトで配信中か確認
・アフィリエイトリンクを貼る

この中で、最大の肝となるのは、
動画が、どこで配信しているか調べる機能です
それ以外の機能は、最初は手でやっても言い訳で。。。

ドラマの情報を取得は、最初は手で入力すればいいし
アフィリエイトリンクを貼るのは、配信場所が見つけられれば、決まるものなので、後で何とかなる。
だから、どこで配信しているか調査する処理を先に作ります。

番組表を取得できるAPIくらいあるだろ?という考えは甘かった・・・

テレビガイドとかあるんだから、番組表を取得できるAPIくらいあるだろ?

と思っていたのがそもそもの間違いのようで、、、
調べたところ、番組表を取得できるAPIは無いみたいです。

一部、NHKではあるようですけど、NHKだけあってもね。。。
というのが、本音なわけで。。

そうなってくると、スクレイピングするか、クローラーを開発するしかないんだろうなって感じです。。。
どっちも似たようなものかもしれないけど。

そんな直ぐには出来ないので、
まずは手動で出来ることを確認してから、自動処理に置き直すことにします。

wgetコマンドでページを取得してみる

VODと言えば、個人的にはUNEXTですから、
まずは、UNEXTから情報を取ってくることにします。

使うのは、wgetコマンド。
早速、次のコマンドを使って、ページが取れるか確認です。

wget –mirror https://****

これで取れたら簡単なんだけどなー。

っていうか、昔はこれで取れた気がしたんだよなー。
と思っていたので、簡単にできると思っていたんですけど、「JavaScriptが無効になっています。
ブラウザ設定でJavaScriptを有効にしてください。」の文字が・・・

つまり、wgetではjavascriptで生成したサイトは取れないっす。。。。ガックシ
いきなり難題にぶち当たった・・・。

wgetの代替え案はスクレイピング

色々調べて行くと、linuxコマンドのcliやwgetではjavascriptのサイトは取得できないらしい、という事が発覚。
ネットで調べて行くと、代替え案が複数出てきてます。

phantomjs:https://www.setouchino.cloud/blogs/74
selenium:https://qiita.com/suin/items/793d06f708041c534ca1
Watir WebDriver:https://ja.stackoverflow.com/questions/5075/javascript-%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%9F%E5%BE%8C%E3%81%AE-html-%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E3%81%84

基本プログラムを組む感じです。
結構煩雑になってしまうし、これ実装したら、簡単にリリースって感じにならないんだけどね。。
なかなか一筋縄ではいかないようです。。

スクレイピングについて調べたら、よくまとまっているページがありましたので、リンク張っておきます。
casperjsというのもあるようです。

https://qiita.com/onegear0o/items/c5dee385e9c5d8cba459

こんなのも見かけたけど、この辺は、わりとガチなやつですね

https://teratail.com/questions/141690
https://teratail.com/questions/12748

確かに、このサイトの通りにやってみたら、unextのサーバーからJSONが取れました。
だけど、このAPIは調べても出てこないAPIなので、非公開なんでしょうから、あんまり使いたくないですね。。。

そうなると残されているのは、スクレイピング。。。