前提・実現したいこと
- 下記のサイトのGAS(Google App Script)版を作りたい。
- 値を順番に全件表示したい。
- サイトのようにない場合の処理を加えたい。
発生している問題・エラーメッセージ
- 下記のソースコードで、「radioTitle」が乃木坂公式サイトに二件あるのに、一件しかとれない。
※ない時は、エラーになる。
ログ [19-01-17 16:18:06:690 JST] [19:56〜20:00 ニッポン放送「乃木坂46梅澤美波の『のぎぼき』!」梅澤美波]
該当のソースコード
javascript
1// 乃木坂URL 2var NOGIZAKA_URL= 'http://www.nogizaka46.com' 3 4function myFunction() { 5 var message = [] 6 7 var html = UrlFetchApp.fetch(NOGIZAKA_URL).getContentText() 8 var items = Parser.data(html).from('<div class="today">').to('</div>').iterate() 9 10 for (var i = 0; i < items.length; i++) { 11// var tvTitle = items[i].match(/class="tv">(.+?)</a>/)[1] 12// var webTitle = items[i].match(/class="web">(.+?)</a>/)[1] 13 var radioTitle = items[i].match(/class="radio">(.+?)</a>/)[1] 14 /* メッセージ */ 15 message.push(radioTitle) 16 } 17 Logger.log(message); 18}
試したこと
- ひとまず、値がない場合はコメント化すれば、解決した。
- 「message」配列を作ったが、思ったように動かない。
補足情報
- 実現したいことは、上記にもあげましたが、GASで乃木坂の今日のメディア情報をスクレイピングしたいです。
- お分かりになる方は、ご教示いただけますと幸いです。
- よろしくお願いいたします。
調べても分からなかったんですが、このサイトへのスクレイプは適法ですよね?利用規約違反ではないですよね?
そもそも提示のブログもやっていいことやってるんでしょうか。
スクレイピングって一つ間違えば違法行為になりえます。
https://www.torikun.com/entry/scraping-law
https://it-bengosi.com/blog/scraping/
Rubyで作る気がないなら、Rubyタグは外しましょう。なぜならそのサイトのRubyのコードはgasで作るにあたって全く参考にならないからです。
コメントいただいた方、以下ご指摘に関してです。
①利用規約違反に関して。
→きちんと行う前に、いろいろ調査しました。しかし、スクレイピングの違法に関して、あまりに無知であったため、再度勉強いたします。申し訳ございません。
②Rubyタグについて
→削除いたしました。ご指摘大変ありがとうございました。
以上です。
返答は結構ですがご一読ください。
一般には、私的な複製で、頻度が低ければあまり問題視されないとは思います(なのでmts10806様ほど厳格な見解ではないです)が、私がさきに書いた理由は、このサイト右クリック禁止してますよね?少なくとも私の環境だと右クリックメニューが開けなかったんです。これってコピーを禁止しているとも言えるわけで、サイトのオーナーが気にしてるのかなーと思いました。気をつけてね。
回答1件
あなたの回答
tips
プレビュー