• ベストアンサー

サイトのVBAでのスクレイピングについて

下記サイトを「VBA」でスクレイピングして、表示される動画の「タイトル一覧」を作成したいです。 ただ「Javascript」?で作成されているようで、表示されてる{内容}と{HTML}が一致せず、タイトルを取得できません。 しばらく前までは、単純に取得できてましたが、最近サイトの表示の仕方が変わってしまいました。 色々調べてやってみましたがダメです。 どなたか詳しい方、ご教示願います。 https://tver.jp/search

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.2

> 具体的に教えてください。 1つ目の手段はサイトのJavaScriptプログラムを解析することです。 ブラウザの開発者ツールで通信ログを見ると、JSON形式で動画のタイトルなど一覧情報を取得していることが判りますので、それと同じHTTPリクエストを投げればJSON形式で動画のリストが取得でき、タイトルだけでは無くTV局名や動画に付けられているタグなどが容易に取得出来ます。 JSON形式ですから、パターン一致などを使わずに簡単にデータが切り出せます。 ただし、HTTPリクエストにはいくつかのトークンが付いているので、単純に検索リクエストを送るだけでは弾かれるでしょうから、順を追ってトークンを取得してからリクエストを投げなければいけないと思われるので、JavaScriptのプログラムを解析して本来の手順でトークンの取得をするプログラムを作る必要があります。 2つ目の手段はブラウザが行っているページの取得・解析・表示というプロセスのうち、取得と解析までをブラウザのエンジンを使って実行し、表示に用いるHTMLデータを作らせた上で、これまで使われていたスクレイピングのプログラムにHTMLデータを渡してスクレイピングさせるという方法です。 最近の検索サイトのデータ収集は、この方法を用いてJavaScriptを使って表示されているページの情報を収集しインデックスを作っています。 ブラウザのエンジンはChrome用やFirefox用などはオープンソースなので公開されており、それらを使って取得と解析までを行いご自身で作ったプログラムと連携するよう改造すれば実現可能です。 また、ちゃんと探せばページの取得と解析までを行ってHTMLを出力してくれるようなプログラムは見つかると思いますので、そういったモノを使ってHTMLを作ってスクレイピングプログラムに読み込ませれば、もう少し簡単に作れるでしょう。

okidsaya555
質問者

お礼

連絡が遅くなり、申し訳ありません。 大変詳しく、また詳細なご説明感謝申し上げます。 2つ目の手段は、完全に理解でき、処理できました。 1つ目の手段は、内容が理解でき、現在試行錯誤で挑戦しております、近々完成できるだろうとの目処がつきました。 本当にありがとうございました、感謝しきれません。 お世話になりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.1

JavaScriptを解析してコンテンツの読み込みをシミュレートするか、HTMLの解析エンジンを使ってJavaScriptを実行した結果のHTMLを作り出してから、それをスクレイピングに掛けるかでしょう。 VBAは使わないので外部エンジンとの連携が可能か判りませんが、記載されているURLのサイトのソースをみると、しっかり難読化されているのでJavaScriptを解析するのは骨の折れる作業だと思います。

okidsaya555
質問者

お礼

ありがとうございます。 ただ書いていただいたことが理解できません。 具体的に教えてください。

すると、全ての回答が全文表示されます。

関連するQ&A