- ベストアンサー
アクセスでデータを収集する方法についての質問
- アクセスの勉強をするため、チャレンジしたいことがあります。教えてgooのカテゴリの中で、「マイクロソフト」カテゴリにある質問者の最多質問時間帯を調べるため、そのデータを自動的に取得する方法を知りたいです。
- 教えてgooのカテゴリで、「マイクロソフト」を開くと、特定のURLが表示されます。過去の質問の頁は、URL中の番号が10ずつ増加していきます。データを収集するためには、適切なフォームを作成し、URLを探し出し、目的のデータを収集するプログラムを作成する必要があります。
- 質問者は、自分の環境がアクセス2002とWin2000であることを明示しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1.URLを保存しているテーブルをオープンし読み込む 2.テーブルの最後までループする Do命令 ループの中で 3.今読んだレコードのURLよりIEデータを得る(Navigate) 4.目的の日付と時間を得る 5.次のレコードを読む(MoveNext) べたで書くとこんな感じです。 プログラミングの基本のところですけど まず、自分でやりたいことをこういうように 順番に書いてみて頭の中を整理すると やりたいことがすっきり見えてくるよ。 これをコードで書いてっていうのは時間的に 無理なのでご自身で調べるか、他の方に譲ります。 では、頑張ってください
その他の回答 (2)
- GuruGuru22
- ベストアンサー率51% (177/346)
あ、ごめんなさい、同じ人だったのですね。 お名前確認しませんでした。 「URLから次々とデータを収集し」ってのは 前述のやり方をその回数分だけ、やればいいと思います。
お礼
できました。 New InternetExplorerで.Navigate (rs!URL)で読み込み、キーワードをfilter関数で抽出、余計な記号等を抜き、データの形に修飾して抜き出すことができました。 .AddNew、.Updateでデータを他のテーブルレコードに挿入することができました。 Do loopよりも、参照テーブルの最終行(EOF)を探して行数を数え、For nextで最終行までの回数分を処理する方が処理が早かったので、改造しました。また、4つの処理を平行して処理できるプロシージャを考えました。 一番悩んでいたのは、得られたデータ(変数)を、どのようにして効率的に次のプロシージャに渡せるかでした。Option Compare Databaseに置けばよかったのですね。 いろいろと勉強になりました。いきなり使い道が広がりそうです。 お礼のご挨拶まで
補足
>その回数分だけやれば・・・ 次のURLをマクロに渡すやり方を伺っております。
- GuruGuru22
- ベストアンサー率51% (177/346)
別件で私が答えてるんだけど、 参考にならないでしょうか。
補足
たびたびお世話になっております。 前回の回答で、特定のURLからキーワードを使ってデータのある行を取り込む技についてありがとうございました。参考になりました。 今回は、前回、無知であることから質問範囲が広すぎた点、イメージが漠然としていた点を反省し、具体的な例を出すことで問い合わせ項目を理解してもらいたいことと、問い合わせ対象を限定して質問した方がいいかと考え、前回の質問を締め切っておりませんでしたが、勉強させていただきたい気持ちで、改めて質問させていただきました。 また、前回の質問が本カテゴリでは後に追いやられてしまうことから、これ以上の回答が望めないだろうと思ったことも理由です。 今回はいくつもあるURLから次々とデータを収集し、そのデータをテーブルに格納することを勉強したく思います。 つきましてはそれについて、ご教示賜ることができれば幸いです。
お礼
作り方の流れをアドバイス下さりありがとうございます。 これをとっかかりに勉強してみたく思います。 本ご回答が寄せられるまで、URLが一つの場合で処理3→4について色々試していました。 エクセルだと処理を進められるのですが、アクセスでやってみても、Document.body.innerTextではデータが全部くっついたもの、Document.body.innerHTMLでは行の最初の列しか得られないので難儀しています。Document.body.allでは欲しくない情報まで取り込んでしまいました。
補足
できました。捕捉の場を借りて、お礼を申し上げます。 New InternetExplorerで.Navigate (rs!URL)で読み込み、キーワードをfilter関数で抽出、余計な記号等を抜き、データの形に修飾して抜き出すことができました。 .AddNew、.Updateでデータを他のテーブルレコードに挿入することができました。 Do loopよりも、参照テーブルの最終行(EOF)を探して行数を数え、For nextで最終行までの回数分を処理する方が処理が早かったので、改造しました。また、4つ平行して処理できるプロシージャを考えました。 一番悩んだのは、得られたデータ(変数)を、どのようにして効率的に次のプロシージャに渡せるかでした。 いろいろと勉強になりました。いきなり使い道が広がりそうです。 お礼のご挨拶まで