質問: 価格.comの商品の値段をexcelに 価格.comの商品の値段をリアルタイムでexcelに表示出来ますか?
回答: こんばんは 回答がつかないようなので・・・ 価格.comでは検索等ができるapiのサービスを公開しているようです。 キーワードを設定すれば検索が可能なので、内容的にご質問にはぴったりの機能と思いますけれど、どうやら、新規の登録受付はしなくなってしまったようです。 http://apiblog.kakaku.com/kakakuitemsearchv1.0.html 上記のようなサービスが使えないとなると、サイトの表示から抜き出すくらいしかなさそうですけれど(いわゆるスクレイピング)、その場合には、各ページの構成や仕組みを調べる必要があります。 一部を見たところ、ソースにそのまま価格が含まれているようなので、通常のスクレイピングで取得することは不可能ではなさそうです。 htmlソースを取得するには、msxml2.xmlhttpでリクエストする方法、ieを操作する方法などなど多くの方法かあると思われます。 (ieは終了するようなので、最近ならselenium利用のほうが良いかも) もしも、サーバーサイドのプログラムが利用できるならそちらの方が良いでしょう。 他には、検索ロボットのようなものでサイト全体を巡回して情報を得るというような大仰な仕組みも考えられないことはないでしょうけれど・・・ エクセルのpowerqueryでも同様のことはできそうな気がしますけれど、私は内容をよくしらないので、こちらに関してはわかりません。 >リアルタイムでexcelに表示出来ますか? 上記のいずれの方法も、対象のurlにアクセスして内容を取得する方法になりますので、「リアルタイムで」とするには、一定時間ごとに繰り返して実行するなどの仕組みにしておいて実現することになるでしょう。 >vbaを使う場合はコードを全部書いてくれると嬉しいです。 質問が「漠」としているのにコードまでお求めとは・・・ 一番簡単でかつ便利そうなのは最初に挙げたapiだと思いますので、すでにキー登録をしている方にお願いしてみるのがbestかと思います。 他の方法の場合だと、漠とした要求にも対応できるには、それなりの調査や技術が必要ですし、価格comのサイトの構成が変われば、都度、メンテナンスが必要になることになります。 それらにも対応可能なところに依頼するのが宜しそうに思います。 とは言え、何も例がないと意味も伝わらないかもしれませんので・・・ 以下は、エクセルvbaでie経由で『ノートpc』のページの『人気売れ筋ランキング』の欄をエクセルにリスト化する最低限のコードです。(事前にieの参照設定が必要です)。 (上にも述べたように、ieはもう旧いのでselenium利用の方がよいでしょう) 実行結果は添付画像のようになります。 何かのご参考にでもなれば sub test_01() dim list, l, sel dim rng as range, i as long const uri = "https://kakaku.com/pc/note-pc/" const celm = "span.rank p.makername p.itemname p.itemprice" const title = "rank メーカー 仕様 価格" with new internetexplorer .visible = true .navigate uri doevents do while .busy = true or .readystate <> 4 doevents loop set list = .document.queryselectorall("#ct087 .contmainin li") cells.clearcontents range("a1:d1").value = split(title, " ") sel = split(celm, " ") set rng = range("a2:d2") for each l in list for i = 1 to 4 rng(i).value = l.queryselector(sel(i - 1)).textcontent next i set rng = rng.offset(1) next l '.quit end with end sub