ネットから情報を取得

タグの編集
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/17 04:24:46
はじめまして、質問をお願いします。

最近VB2005の勉強をはじめました。
ネット上から情報を取得して、必要なデータを一覧表で表示する
ツールの作成をめざしています。

VB中学校さんのデーターベースを読んでみたのですが、
ネット上から情報を取得する方法については書かれていませんでした。

アドバイスをお願いします。

投稿者 ヴァン  (社会人) 投稿日時 2009/11/17 18:56:34
「ネット上の情報」とは何ぞや。

ニュース?株価?天気?

何にしろHTTP関連の処理を調べれば良いでしょう。

ただし、情報の転記の際は十分に注意が必要です。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/18 05:43:45
アマゾンサイトから本のデータを取得し

一覧でランキングや現在の価格などの詳細を表示するソフトの作成を考えています。

データーベースを元にhttpの勉強すればいいのでしょうか。
投稿者 ?-?  (その他) 投稿日時 2009/11/18 17:41:01
> アマゾンサイトから本のデータを取得し

とりあえず、いくつかのステップに分けたほうがいいのではないでしょうか?

> データーベースを元にhttpの勉強すればいいのでしょうか。

データベースはデータベース、httpはhttpで、別々の機能で考えたほうがいいです。

まずはアマゾンからhttpでデータを取得して、そこから必要な情報だけを切り出す方法を勉強し、次に、データベースの操作をして、データの挿入・更新・削除などが出来るようにする方法を勉強し、それぞれを組み合わせればいいでしょう。

少し勉強すればそれぞれ別の技術であることがわかると思いますので、改めてわからない部分を質問したほうがいいでしょうね。
投稿者 ヴァン  (社会人) 投稿日時 2009/11/18 19:05:12
今回の場合はデータベースはあまり関係ないと思います。
アマゾンサイトがデータベースになりますから。

まあ、アマゾンから取得したデータをデータベース化すると言う方法はありますが、
ランキングは絶えず変わりますから無意味なデータになるでしょう。

アマゾンの場合Web Serviceがあったと思います。
それを使うのも一つの手段でしょう。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/19 04:30:10
書き込みありがとうございます。

作成しようと思っているソフトは、アマゾンの検索機能を取り入れて、
検索で取得されたデータを元に
その場でランキングや現在の価格などの必要な項目だけを
抜き出してソフトに表示するためのソフトです。

アマゾンから取得したデータをデータベース化すると言う方法ではなく、
普段は検索として使用し必要に応じて手動でソフトに表示されたデータを
保存できたらと思ってます。

httpの知識がまるでありませんが、
ブラウザのソースからデータを取得すればいいのでしょうか。

サイトをデーターベースとして使用する勉強方法がありましたら、
まず何から勉強したらいいのか教えていただけるととても助かります。

宜しくお願いします。



投稿者 葉月  (社会人) 投稿日時 2009/11/19 07:43:08
個人的に利用するなら自己責任で大丈夫だと思いますが――
配布を考えているならアマゾンで利用されている情報を二次的に利用していいか、
アマゾンで調べてください。
載っていないようでしたらアマゾンに問い合わせることをお勧めします。

用途はさておき。
趣味で使う分には、いろいろと汎用的に使えるので、
2点やり方をざっくり紹介します。

①WebClientクラスを利用
②HttpWebRequestクラスとHttpWebResponseクラスを利用する。

①は手ごろで簡単ですが、Cookieを動的に取得できる手段がないため読めないサイトがあります。
  Cookieが必要なサイトでWebClientを使うとエラーページ(403など)に飛ばされます。
②は①に比べて複雑ですが、Cookieなどを動的に取得できる手段があるので読めるサイトの幅が広がります。
 まずは、RequestやResponseのやり取りを勉強することからお勧めします。

ソースを取得したら、情報を取捨します。
3点のやり方を紹介します。
①同じサイトの似たようなページを取得するなら、Stringクラスを使って必要な部分を取得します。
 とくに、Substring、IndexOf、LastIndexOfメソッドは重要なので使えるになってください。
 それから、SplitとToUpperメソッドも必要です。
 これらを用いて、指定個所だけを切り取ったりできる汎用クラスを作ると楽です。
 高速+簡単なので、私はこの方法を一番用いています。

②複数のサイトを巡回し、処理に時間がかかってもいいなら正規表現。
 前に私が書いたサンプルがあったので紹介します。
 これじゃ処理は全然だめですが、雰囲気は伝わると思いました。
>参考URL
http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=141

③DOMを利用する方法もあります。汎用的に使えてコードも短くできますが、
 タグに依存するのでいざって時に使えない場面もあります。
 処理は①に比べてかなり遅いです。

私的には①主体で、必要に応じて②と③を使うのがお勧めです。
投稿者 あにす  (社会人) 投稿日時 2009/11/19 10:29:15
ソースをXMLやJSON等で取得出来るなら、その構造をVBのクラスに書き落としてデシリアライズする方法もあります。かなり楽にソースを解析出来ると思います。
VB シリアライズ 等で検索してみると詳しい情報が得られます。

投稿プログラムのDeskTopMemoVBにごく簡単な実装があります。
http://homepage1.nifty.com/rucio/main/Toukou/T10_DeskTopMemoVB.html
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/19 18:12:14
書き込みありがとうございます。
知識が無くてご迷惑かけてしまいますが、
宜しくお願いします。

XMLやJSONが、まだ検索していなくてどんな物なのかかわかりませんが、
WebClientなど同じように、サイトの情報を取得する方法なのでしょうか。

まず最初に僕が勉強すべき事はサイトから元になる情報を得なければならないので、
WebClientクラスや、HttpWebRequestクラスとHttpWebResponseクラス、
XMLやJSONなどの取得方法を勉強し、

ある程度理解できたらその後、VB シリアライズ や DOMなどの取捨方法を勉強すればいいでしょうか。

ご紹介頂いたサイトの情報を取得する方法は、
一旦サイトから取得されたデータはPCに保存され、
それから取捨をはじめるのでしょうか。

そうであれば、サイトから取得すると同時に保存なしで取捨し、
必要な詳細だけをソフトに表示する方法がありましたらお願いします。


投稿者 dream  (その他) 投稿日時 2009/11/19 18:57:46
段階的に機能を実装していくように努力しましょう。
ゴールは、「アマゾンからHTTPで取得したデータを加工して表示」ということだと思いますが、とにもかくにも、まずはサイトの「情報を取得する」を中間地点にして作業すればいいんじゃないですか?
(取得結果をファイルにするかメモリ上に残しておくかは任せます。)

その後、XMLとして処理するとか、そういう風に。

> XMLやJSONが、まだ検索していなくてどんな物なのかかわかりませんが
> WebClientなど同じように、サイトの情報を取得する方法なのでしょうか。

回答に出てきた用語ぐらいは検索してみてから書きましょうよ。
そうすれば、この質問が少し的を外れた内容であることがわかると思うのですが
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/20 01:29:55
XMLやJSONなどが言語という事を知らずに
書き込みをしてしまいすみませんでした。

まず最初にサイトの情報を取得するために、
WebClientクラスや、HttpWebRequestクラスとHttpWebResponseクラス
の扱い方から解決していきたいと思います。

それらの勉強法は、
講座内のレッスンだけでまかなえるのでしょうか。
投稿者 ヴァン  (社会人) 投稿日時 2009/11/20 02:04:05
>講座内のレッスンだけでまかなえるのでしょうか。 

ここのレッスンを行えばどんなアプリでも作れるわけじゃありませんよ。

先ずは目的の情報を取得する所から始めましょうよ。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/20 03:24:48
ネットなどで検索しながらWebClientクラスなどの勉強をはじめてみます。

今回のようなソフトの作成において、
参考になる書籍などがありましたら教えてください。
投稿者 あお  (社会人) 投稿日時 2009/11/20 23:01:16
本の相性は人それぞれなので、
大きめの本屋に行って、
VBのネットワークプログラミング関連の書籍を読み比べてみましょう。
自分がやりたいことに近いことが書いてあって、
かつわかりそうなものを選ぶのが一番だと思いますよ。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/21 00:11:05
全体の流れをいまいち理解でいきていないので間違いがあれば指摘をお願いします。

XMLの方法で取得を考えています。

全体の流れとして、
WebClientクラス等でアマゾンサイトのソースを取得し、
デシリアライズでXMLをVBオブジェクトに変換し解析するという事で宜しいのでしょうか。

現在WebClientクラスでアマゾンの検索結果、
1ページ分のソースを取得することが出来ました。
ここで取得した言語はhtmlです。

デシリアライズするにはXMLでなければならないので、
このあと、htmlからXMLに変換するプログラムをVBで実行するということでしょうか。

今回は1ページ分のデータを取得しましたが、
今後複数の検索結果のページを扱うことになります。

今回のhtmlからXMLに変換するという作業は、
言いかえれば、今後複数の検索結果を取得するための
元となる取捨プログラムの作成ということになるのでしょうか。
投稿者 YuO  (社会人) 投稿日時 2009/11/21 00:55:22
AWSって本の検索はできいのでしたっけ。
http://www.amazon.co.jp/gp/feature.html?ie=UTF8&docId=451209

Web Serviceがあるのだから,まずはそちらを当たった方がよいと思いますが……。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/21 01:22:50
今後、別のサイトの検索ソフトの作成も考えており、
今後のためにも取得方法を学んでいます。

今回はAWSサービスを使用しない方法で作成したいので
宜しくお願いします。
投稿者 ヴァン  (社会人) 投稿日時 2009/11/21 07:07:32
htmlソースで取得した物をXMLにするのは面倒というか無駄と言うか。

先ずはそう言うことを考えずに、htmlのソースを解析して、それが使えるかどうかを判断すべき。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/21 07:54:53
色々な言葉が出てきてごちゃごちゃになっています。

今後僕が勉強すべき事はWebClientクラスを使いhtmlを取得していますので、
葉月さんから教わった3点いずれかの取捨方法を使い解析する方法でよろしいでしょうか。


あにすさんから教えて頂いたXMLの方法とは、
WebClientクラスの取得方法とは異なり、
何らかの方法でサイトからのソースをhtmlではなくXMLで取得し、
そしてそのソースをデシリアライズするという解釈でよろしいのでしょうか。
投稿者 あにす  (社会人) 投稿日時 2009/11/21 11:38:09
>あにすさんから教えて頂いたXMLの方法とは、
>WebClientクラスの取得方法とは異なり、
>何らかの方法でサイトからのソースをhtmlではなくXMLで取得し、
>そしてそのソースをデシリアライズするという解釈でよろしいのでしょうか。

AWSにWebClientクラス等を用いてアクセスすることでXMLで取得出来ると思います。(そこまで調べてない)
ただ、僕が書いた方法は

>ソースをXMLやJSON等で取得出来るなら

という前提でのものなので、

>今回はAWSサービスを使用しない方法で作成したいので
>宜しくお願いします。 

という条件では遠回りな方法になりますので忘れて下さい。

http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9423
で僕が投稿したコードで葉月さんが挙げた③(3)の方法が使われています。雰囲気は掴めると思います。
投稿者 サムライトルーパー  (高校生) 投稿日時 2009/11/21 18:05:49
DOMについて検索してみたのですがよくわかりませんでした。

こちらで紹介されたDOMの意味は、
XMLやhtmlのソースをメモリに読み込んで、
DOMツリー化して解析するということなのでしょうか。
投稿者 あにす  (社会人) 投稿日時 2009/11/22 09:38:49
>サムライトルーパーさん

>こちらで紹介されたDOMの意味は、
>XMLやhtmlのソースをメモリに読み込んで、
>DOMツリー化して解析するということなのでしょうか。

きちんと理解しているじゃないですか。その解釈で間違いないと思いますよ。