人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAとWEBクエリに関する質問です。

エクセルVBAとWEBクエリを駆使し

WEBページからデータを次々とエクセルへ入力するプログラムを作成したいと考えています。

データを抜き取ってくるページはヤフーオークションです。

抜き取りたいデータは以下の写真1?12にあるデータになります。

抜き取りたいデータ(写真1):http://oskuni7.sakura.ne.jp/hatena/question7/pic1.jpg

抜き取りたいデータ(写真2):http://oskuni7.sakura.ne.jp/hatena/question7/pic2.jpg

データを読み込むエクセルは以下のようになります。

http://oskuni7.sakura.ne.jp/hatena/question7/query.htm

プログラムを実行すると、商品URLのURLへ飛び、その後写真番号1番のデータから順番に次々とエクセルへデータを書き込んでいくというプログラムになります。。

WEBクエリとVBAを駆使して以上のようなことをすることは可能でしょうか?

もし可能でしたらどのようにすれば可能になるか教えていただけないでしょうか?

もし不可能でしたらどのような工程を経たら可能になるでしょうか?

お手数をおかけしますがご回答をよろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:Web エクセル クエリ データ プログラム
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● niwa-mikiho
●18ポイント

出来るとは思いますが、WEB に特化されたスクリプトである PHP や Perl を使った方がいいと思います。

データの格納には MySQL や SQLite を使えばいいかと思います。

スクリプトで html を取得

正規表現で抜き出す

それらデータをデータベースにプッシュ

あとは定期的にバックアップでもとればよいかと。

こうすることで、よほど変な風に組まなければ Linux でも Windows でも同じスクリプトが動作します。

◎質問者からの返答

ご回答ありがとうございます。


2 ● fester
●17ポイント

WinHttp.WinHttpRequest とか XMLHTTP でHTMLソースを取得し、正規表現で抜き出せば良いかと思います。


参考

Web ページをダウンロードする方法? MSXML 編?

WinHTTP (Windows HTTP Services) 覚書

参考になりそうな過去質問

Office TANAKA - Excel VBA(正規表現によるマッチング)

VBAで正規表現を使う:CodeZine

◎質問者からの返答

ご回答ありがとうございます。


3 ● ardarim
●17ポイント

WinHTTPやXMLHTTPでも試したことがありますが、ヤフオクのデータを取得する場合に限っていえば、ログインをどうやるかが問題です。

WinHTTPやXMLHTTPだとIEのcookieを流用できないのでVBAから手動でログイン操作とcookie管理を行わねばならず、(できなくはないですが)相当難しいと思います。

また、取れるのは生HTML(ヤフオクの場合EUC)なので、Excelで扱うには文字コード変換が必要です。(VBAにはEUCの変換機能はないので自力で作らねばならない。作ったことがあるので作れないわけではないですが)


こちらでちょろっとやり方を書いてますので参考になれば。

http://d.hatena.ne.jp/ardarim/20070110/1168449396

このやり方で条件に挙げるようなすべてのデータを取得してExcelで管理するVBAが作れます(実際に使ってます)

◎質問者からの返答

ご回答ありがとうございます。

ブログのほう拝見させていただきました。

今回はログイン機能は今のところ使用せず、ヤフオクの場合はゲストの状態で情報を取得するので

WinHTTPもしくはXMLHTTPを使ってみようかと思いました。

その際、ポイントとなってくるのはEUCの変換となりそうなのですが、やはり変換は難しいでしょうか?

また今回はデータを抽出するケースですが、逆にフォームの中にデータをどんどん入力していくケース、自動出品ソフトやメールフォーム一括入力などもこれと同じ様にWinHTTP等を使用すればできるのでしょうか?

その場合はログイン機能を使いたいと考えているのですが、、、。

よくわからず仕舞いですが、もし知っておりましたらご回答をよろしくお願いいたします。


4 ● blue0rice0star
●17ポイント

ExcelVBAなら問題なくできます

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1220007...

こちらが参考になると思います XP IE6 Excel2000 での確認です

サンプルが必要なら用意します

http://www.formzu.net/fgen.ex?ID=P33169656

◎質問者からの返答

ご回答ありがとうございます。


5 ● ardarim
●17ポイント

ヤフオクで使う前提であれば、XMLHTTPよりWinHTTPを使うことをお勧めします。XMLHTTPではうまく動かない場合がありました。ランダムなのか条件は分かりませんが、特定アイテムの詳細ページをロードした場合にヤフオクがログインページにリダイレクトするレスポンスを返すことがあり、XMLHTTPはリダイレクトをうまく扱えないためです。


VBAでのEUC変換については外部DLLを呼び出すか、IEのコンポーネントを利用するか、自力で関数を書くか、などの方法があり「vba euc」で検索すれば色々見つかります。


データの取出しとは逆にフォームに値を埋めていく場合は、WinHTTPでも可能だと思いますが、前回答で書いたとおりログイン状態を維持するのが難しい(というかできるかどうか不明)と思います。

cookie管理を別にして考えれば、フォームデータをVBAで作ってWinHTTPでPOSTするだけですのでそんなに難しいことではありません。


簡単なのは、IEをCOM経由で起動して操作することです(前回書いた方法です)。この場合はIEがcookieの管理をやってくれますので、表示されるIEのログイン画面でログインする(またはVBAからパスワードなどを流し込んで自動ログインする)ことで後はすべてIEに任せられます。

この場合はフォームデータはIE上のそれぞれの入力欄に対して、VBAから流し込む(document.getElementById('xxxx').value = 'yyyy'など)必要があります。


ただし、最近のヤフオクのシステム変更で操作にFlashやJavaScriptが多用されるようになったのでいずれにせようまく動かすために解析するのは難しいかもしれません。

◎質問者からの返答

ご回答ありがとうございます。

データの埋め込みはWinHTTPがいいということですね^^。

参考にさせていただきます。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ