none
web上にあるデータの読み込みについて RRS feed

  • 質問

  • いつもお世話になっております。

    標題の件ですが、具体的に、

    http://www.bk.mufg.jp/ippan/gaitame/spot_rate.xls

    ここのデータを利用して、活用したいことがあるのですが、どういう方法があるでしょうか?

    理想的なのはADO.NETとかでデータをDataSetに取り込み、各種通貨を使ってデータを加工するのに利用できたらと思うのですが…

    ADO.NETを使う以外にも良い方法がありましたらあわせて教えていただければと思います。

    何卒よろしくお願いいたします。
    ぷら
    2009年10月14日 17:25

回答

  • > そもそも、参考にした記事の方法では、他のサーバー上のデータを読み込むことは
    > できないのでしょうか?

    どう考えても、できないと思いますけど・・・

    たとえて言えば、Pla さんの PC にインストールしてある MS Excel で、その Web サーバーにある xls フ
    ァイルを直接開いて見に行くようなものだと思います。

    物理的/電気的に xls ファイルのあるファイルシステムに接続する手段がありませんし、仮に接続できたと
    してもファイルを読むためのアクセス権がありません。

    ADO.NET にそれらの問題を解決する魔法はない(はず)ですし、そもそも「記事の方法」は自分の Web サ
    ーバーに xls ファイルが存在するという前提ですし・・・

    ブラウザで Web サーバーにアクセスしてデーターを取得できるのは、インターネット経由 HTTP/TCP/IP
    プロトコルで Web サーバーに接続でき、Web サーバーは xls ファイルへのアクセス権を持っているとと
    もにWeb サーバーへの匿名ユーザーのアクセスを許可しているからで、「記事の方法」とは全く条件が違
    います。

    > 他のサーバーだとtextデータの読み込みもできないでしょうか?

    ファイルの形式が違うだけで、上と同じことだと思います。


    目的の xls ファイルをダウンロードして、Pla さんの Web サーバーの適切なディレクトリに置けば、当然
    ですが、「記事の方法」で可能です。従って、例えばですが、定期的にファイルをダウンロードして適切な
    ディレクトリに配置する Windows アプリを別に作成して、Pla さんの Web サーバーに常駐させれば目
    的は適うかもしれません。(セキュリティ、著作権などの問題は別にして) 

    それより、今回のケースでは、XML Web サービスを利用する方がよさそうですが、それは検討されたでし
    ょうか? 必要な情報を提供しているサービスがないのでしょうか?

    インターネットに公開されている Web サービスを使ってみる
    http://www.microsoft.com/japan/msdn/smartclient/richui/pt4_use.mspx

    • 回答としてマーク Pla 2009年10月18日 13:07
    2009年10月16日 13:07

すべての返信

  • > 標題の件ですが、具体的に、
    >
    > http://www.bk.mufg.jp/ippan/gaitame/spot_rate.xls
    >
    > ここのデータを利用して、活用したいことがあるのですが、どういう方法があるでしょうか?

    spot_rate.xls というのは、他人の Web サイトにあるファイルと理解しています。(即ち、Pla さ
    んは、その Web サイトのサーバー側で、ASP.NET や ADO.NET 等を使ってデータ収集や加
    工等をすることはできない状況にあると理解しています)

    そうであれば、活用の範囲は、ダウンロードした後、クライアント側でそのエクセルファイ ルをど
    のように利用できるかに限られてきます。従って、VBA などを利用したクライアント側のアプリ
    ケーション開発の話になるかと思います。(Visual Web Developer を利用しての Web アプ
    リケーションや Web サービス開発の話ではなくて)

    2009年10月15日 12:29
  • SurferOnWwwさま

    いつも的確なアドバイスをいただきまして、誠にありがとうございます。

    質問時の条件の説明があまりに情報不足だったと、今になって反省してますが、お察しの通りの環境です。

    今目指している仕組みは、銀行が発表する為替レートのうち、TTSとTTBというものを使って、とあるデータ加工をしたものを、web上で表示させたいと考えています。

    そのため、FX業者さんがブログパーツやウィジットなどを提供していますが、リアルタイムすぎて困るというのと、そこで取引されているレートは使わないため、自作するしかないかという結論にいたり、試行錯誤しています。

    http://support.microsoft.com/kb/311731/
    http://support.microsoft.com/kb/316934/ja

    この辺りを参考にしましたが、調べているうちに、別サーバーはダメなのか?など、本題からずれた壁にも当たり、根本的に、今考えている仕組みを実現させる方法について、全体的な方法論も含めて質問させていただきました。


    そもそも、参考にした記事の方法では、他のサーバー上のデータを読み込むことはできないのでしょうか?


    その方法が不可能な場合は、
    http://www.mizuhobank.co.jp/corporate/bizinfo/information/market/data/quote.txt
    このデータをtextreaderなどを使って、文字位置で数値を読み取る方法が考えられますが、他のサーバーだとtextデータの読み込みもできないでしょうか?


    ここからは愚痴ですが、外国の銀行はRSSやXMLでの配信があるようですが、日本の銀行さんにも再利用しやすい方法で情報を出していただきたいものです(泣)

    以上、何卒よろしくお願いいたします。
    ぷら
    2009年10月15日 13:57
  • > そもそも、参考にした記事の方法では、他のサーバー上のデータを読み込むことは
    > できないのでしょうか?

    どう考えても、できないと思いますけど・・・

    たとえて言えば、Pla さんの PC にインストールしてある MS Excel で、その Web サーバーにある xls フ
    ァイルを直接開いて見に行くようなものだと思います。

    物理的/電気的に xls ファイルのあるファイルシステムに接続する手段がありませんし、仮に接続できたと
    してもファイルを読むためのアクセス権がありません。

    ADO.NET にそれらの問題を解決する魔法はない(はず)ですし、そもそも「記事の方法」は自分の Web サ
    ーバーに xls ファイルが存在するという前提ですし・・・

    ブラウザで Web サーバーにアクセスしてデーターを取得できるのは、インターネット経由 HTTP/TCP/IP
    プロトコルで Web サーバーに接続でき、Web サーバーは xls ファイルへのアクセス権を持っているとと
    もにWeb サーバーへの匿名ユーザーのアクセスを許可しているからで、「記事の方法」とは全く条件が違
    います。

    > 他のサーバーだとtextデータの読み込みもできないでしょうか?

    ファイルの形式が違うだけで、上と同じことだと思います。


    目的の xls ファイルをダウンロードして、Pla さんの Web サーバーの適切なディレクトリに置けば、当然
    ですが、「記事の方法」で可能です。従って、例えばですが、定期的にファイルをダウンロードして適切な
    ディレクトリに配置する Windows アプリを別に作成して、Pla さんの Web サーバーに常駐させれば目
    的は適うかもしれません。(セキュリティ、著作権などの問題は別にして) 

    それより、今回のケースでは、XML Web サービスを利用する方がよさそうですが、それは検討されたでし
    ょうか? 必要な情報を提供しているサービスがないのでしょうか?

    インターネットに公開されている Web サービスを使ってみる
    http://www.microsoft.com/japan/msdn/smartclient/richui/pt4_use.mspx

    • 回答としてマーク Pla 2009年10月18日 13:07
    2009年10月16日 13:07
  • SurferOnWwwさま

    いつもありがとうございます。

    今回、たまたま別件を調べていたとき(RSS取得の件)に、見つけた記事にヒントを得て調べてみたら、web上であれば別サーバーのデータを取得することはできそうです。
    私が質問をする際に、的確に状況・条件を記載できていなくて、実現したいことがうまくお伝えできていなかったと反省しております。



    しかし、実現したいことの割に、この手法を使った方法では不効率だったり、相手方サーバーに負担をかけるだけだと考え、SurferOnWwwさまに教えていただいた方法を含め、別の方法で実現してみようと思います。


    ですので、ここから先は、参考としてのスレッドになればと思いますが…
    http://support.microsoft.com/kb/311731/
    のサンプルコードに
    Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                & "Data Source=" & Server.MapPath("../ExcelData.xls") _
                & ";" & "Extended Properties=Excel 8.0;"
    
    とありますが、DataSourceの指定に、ドライブの絶対パスでの指定ではなく、仮想サーバーのルートからのパス指定でデータを読み取ることができるということは、別のwebサーバー上でも指定が可能と思いますが、このあたりは考え方として間違えているのでしょうか?

    ぷら
    2009年10月17日 4:53
  • どうもアクセス権に関する根本的なところを理解されてないような気がしますけど・・・

    > 今回、たまたま別件を調べていたとき(RSS取得の件)に、見つけた記事にヒントを得て調べてみた
    > ら、web上であれば別サーバーのデータを取得することはできそうです。

    単に Web 上にあるというだけではダメで、他人のサーバーにあるファイルの場合は以下の条件が
    必須ですが、その点は理解されているでしょうか?

    (1) インターネット経由で Web サーバーに接続できる。

    (2) Web サーバーは公開されている(インターネットの匿名ユーザーにアクセスを許可している)。

    (3) Web サーバーはファイルへのアクセス権を持っている。

    最初の質問にあった spot_rate.xls ファイルも RSS も、上記の条件を満足しているから、Web サー
    バー経由で取得可能なのです。(← 必ず Web サーバー経由です。これがミソ)

    しかしながら「記事 ( http://support.microsoft.com/kb/311731/ ) の方法」は上記の条件を満足し
    ません。それはご理解いただけるでしょうか?

    なお、クライアント側はブラウザである必要は無く、WebClient クラスや XmlDataSource クラスを利
    用してアプリケーションを自作し、データを取得できます。(先のレスで、「・・・ Windows アプリを別に作
    成して・・・」と書いたのはそのことです)


    > DataSourceの指定に、ドライブの絶対パスでの指定ではなく、仮想サーバーのルートからのパス指定
    > でデータを読み取ることができるということは、別のwebサーバー上でも指定が可能と思いますが、
    > このあたりは考え方として間違えているのでしょうか?

    間違ってます。Data Source に指定するのは Pla さんのサーバー(他人のサーバーではありません)の
    物理ファイルパスである必要があります。

    HttpServerUtility.MapPath メソッドは、Web 上で使用しているアドレスを、サーバー内で使用してい
    る Windows システムの物理ファイルパスに変換するだけです。

    例: www.abc.co.jp/ExcelData.xls → E:\WebSite\ExcelData.xls

    2009年10月17日 7:32
  • お世話になっております。

    アクセス権について、理解が足りない気がしました。

    確かに、今回のようなケースを考えるとき、webページの表示ロジックやアクセス権に関しては気にしたことがなかったので、これから調べて、勉強していこうと思います。



    ぷら
    2009年10月18日 13:06