プロが教える店舗&オフィスのセキュリティ対策術

WEBの商品ページにある、商品コードや商品名などをエクセルに項目別で自動入力ができるようにしたいのですが、どのように行えば良いでしょうか?
また、同じ商品名の物は既存の商品名列の下に表示されるようにしたいです、、。

商品ページはCSVファイルなどへの変換が出来ず、HTMLのソースもかなり古いようで、
HTMLとの連携?は早々に諦めてしまいました、、。

VBAを勉強中でとりあえず実行出来る環境だけ整えましたがどこから初めていいやら
考えこんでしまっています。

詳しい方いらっしゃいましたらご教授いただけると幸いです。

A 回答 (2件)

こんにちは。



>WEBの商品ページにある、商品コードや商品名などをエクセルに項目別で自動入力

まず、その前に、そのWebサイトが自動で取得していることを許しているかどうか、ということを確認してください。ただ、明文化されていても、常識て程度、1日に数回のアクセス程度で、個人でおやりになる分には、それを構わないと思うのですが、具体的なノウハウは、少なくとも私は、公開はしません。

次に、かなり古い昔、ここの掲示板で、商品ページなどのWeb構造というのは、繰り返しになっているので、HTML.Document をSplit 関数で分ければよいことを、私などは教わりました。ずいぶん昔の話です。

多くのVBAユーザーは、この後、タグ(tag)をループして、その一つを選び出すという方法を学んでいるようです。まだ、同じようなテクニックを使っている人を見かけます。

私は、正規表現(VBScript.RegExp)という方法を知っていたので、あまり必要としませんでした。とても便利なツールです。なお、現在、私は、Basp21 をVBAで使用しています。この中に正規表現コマンドがあり、Perlライクで使えます。

その後、DOM といって、Webスクリプトの構造は、一定の法則によって書かれているので、JavaScript のコマンドで取得すれば、抜き出せることを知りました。

どこのサイトで知ることができるか、というと、以下のサイトです。
http://www.vba-ie.net/
VBAのIE制御入門

最近、やっと、ここの内容が読めるようにはなったものの、当初、腹が立つほど不親切な書き方だと思いました。情報が分散してしてわかりにくいのです。

実は、もう一つ、欠かせないサイトがあったのです。Yu-Tang さんといって、ここの掲示板の会員でもあった方で、Webスクレイピングというものを日本で最初に流行らせた方です。ネット内の社会問題にもなりかねない勢いで、有名になりすぎて、ついにサイトがなくなってしまいした。この方のサイトの恩恵は大きいです。たぶん、それに似たものは、どこかにあるかと思います。
キーワード [Webスクレイピング][Web クローリング]で探すとテクニックが出てきます。

社会問題というのは、いくつかのWeb上の企業でのロボットによる情報取得を嫌がっています。その代表格は、Amazon です。また、ハローワークの検索サイト、そしてQ&Aサイトのモーグなどが、思い当たります。
先日の「エクセル上のURLからWebページ内特定箇所URL自動取得 」というご質問も同様てす。

ここの掲示板で、取得方法をお聞きになる方は、ある程度、この方面に明るい方でないと、教えるに教えられないというか、回答者にとっても、大変に迷うところになってしまいます。

ここまでが、今までの経緯です。

>どこから初めていいやら考えこんでしまっています。

さて、Yu-Tangさんが教えていた時代と、今変わったのは、いろいろ便利になり、Google で情報が取れる可能性があるということです。私自身は、VBAに頼るせいか使い方は知りませんが、思った以上に便利なようです。また、昔は、そういう情報を取るツールは、ハッキングツールと言って場合によっては、アンチウィルスソフトに引っかかっていたのです。

今は、Internet Explorer で、F12 を押せば、DOMの構造などが、本当に詳しく出てきますので、有名なFireBug(FireFoxのアドオン)などは不要になってしまいました。それだけで、VBAで抜き出す情報が取れます。

添付画像の場合は、教えて!gooの今ご覧になっているサイトですが、以下のようにして、オブジェクトが取れましたので、後は、そこから抜き出すだけです。左上端 ①の□← を押して、画面で取得する部分をクリックして反転させれば、どこら辺りを取ればよいのか教えてくれます。(Class か、ID が良いです)

With objHtml '←IE.Document など、いくつか種類があります。
   Set pt = .getElementsByClassName("q_article_info clearfix")
End With

もちろん、画像の場合は、<h1> のタグをループさせれば取れるのでしょうけれど、何百というタグを探さなくてはならないでしょう。Java Script のプログラミングの知識があると、楽になります。

なお、ExcelのWebクエリでも取れる場合がありますが、限界があります。

今、何かよいサイトはないかと思って探していましたが、内容は上級になるかもしれませんが、
https://www.ka-net.org/blog/?p=4855
Ka-net は、いつも最先端の情報がふんだんに含まれていますので、必見かもしれません。ただ、あえていうと、

WinHttpRequest/XMLHTTPRequestオブジェクトで取得しなければならないほど、一般の人たちは急いでいませんし、また、そうしたことで、万が一にも、自分のプロバイターにIPアドレスを通報させられるようにならないとも限りませんので、鈍足のIEオブジェクトでも十分だと思います。

なお、今、どこにも専用ツールのまとめが出ていませんので、以下に記しておきます。

http://alternativeto.net/software/httpwatch/
この中で、IE のF12で足りるとは申しましたが、プロ級になってくると、不足を感じるかもしれません。その前段階で必要になるツールです。Fire Bugは、まだ健在のようです。

以上で、大雑把ですが、今私が知る情報の概況をまとめました。
以下は、IEで、F12 キーを押した後の作業です。
「商品ページの項目をエクセルに自動入力」の回答画像2
    • good
    • 0

Webクエリという方法があります。


うまくいけばVBA?HTML?一切関係ないよ。という方法です。
http://www4.synapse.ne.jp/yone/excel2010/excel20 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A