5

助けが必要なプロジェクトがあります。自分が作成したWebサイト(abc123.comなど)にアクセスして、ダウジョーンズインデックスを表示できるようにしたいと考えています。それでおしまい。私のabc123.comWebサイトに12050のような1つの数字を表示するだけです。

明らかに、YahooFinanceのような場所からデータを取得する必要があります。.csvファイルなどをダウンロードしたくありません。また、Yahooのデータは15分遅れていることがわかっているので、リアルタイムのデータである必要はありません。自分のサイトにアクセスして、ダウジョーンズインデックスが何であるかを確認したいだけです。

この質問をする前に、私はSOについていくつかの同様の質問を調査しましたが、それらの多くは未回答であるか、YQL(現時点で調査して理解しようとしているもの)を参照しています。

これを行うための最も簡単な方法に関するガイダンスをいただければ幸いです。私はHTMLの初心者プログラマーであり、最も理解しやすく実装しやすいルートを探しています。

4

4 に答える 4

4

できません。プログラムではなく、合法的に。

特に明記されていない限り、見積もりは遅れています。NASDAQ、NYSE、Amexの遅延時間は15分です。他の交換の遅延時間も参照してください。Yahoo!で特定された独立したプロバイダーから提供された見積もりやその他の情報 ファイナンスパートナーページ。見積もりは自動的に更新されますが、25分間操作がないとオフになります。見積もりは少なくとも15分遅れます。すべての情報は、情報提供のみを目的として「現状有姿」で提供されており、取引目的やアドバイスを目的としたものではありません。どちらもYahoo! また、独立したプロバイダーは、情報の誤り、不完全性、遅延、またはここに含まれる情報に基づいて行われた行動について責任を負いません。Yahoo!にアクセスする サイトでは、そこにある情報を再配布しないことに同意するものとします。

主要な市場データプロバイダーはすべて、そのような法的なものを持っています。

しかし、とにかくそれを行うつもりなら、私はおそらくあなたが探している引用を見つけるためにhtmlをダウンロードしてそれを解析するでしょう。

合法的にそれを行いたい場合は、取引所自体または情報を中継するサードパーティエンティティからデータを取得するために多額のお金を支払う必要があります。その場合、それらが提供するAPIを使用する必要があります。

出典:あなたがやろうと思っていることをやろうとしている:)

(編集)YQLを使用すると言う人へ:

利用規約をご覧ください。

それはいけません:

YQLを販売、リース、共有、譲渡、またはサブライセンスするか、Yahoo!と組み合わせてYQLを使用することで収入を得ることができます。APIまたはその他のWebサービス、直接の商業的または金銭的利益のためかどうかにかかわらず、Yahoo!の事前の明示的な書面による許可なし

また

Yahoo!が提供する製品またはサービスと競合する製品またはサービスでYQLを使用します。

株価を共有しているサイトは、finance.yahoo.comと競合するため、YPLの利用規約に違反します。さらに、このデータで行っていることからお金を稼ぐことはできません。書面による明示的な同意を得て頑張ってください。

YQLの「 TheDarkSide 」も読んでください:「私のコードを所有しているのは誰ですか?技術的には、彼らがすべてを所有しています。」

YQLは、スケーラビリティ、収益性、単純さ、または合法性の点で優れたソリューションではありません。あなたがこれらのことのどれも気にせず、あなたのウェブアプリケーションが人気になったりお金を稼いだりしないなら、そしてあなたはYahoo!とうまく遊ぶためにたくさんのコードを書くことを気にしない。次に、YQLがその方法です。

(編集#2)

自分で情報を表示しようとしている(他の人と共有していない)場合は、htmlを解析して、phpではなくC#/VisualBasicとASP.NETを使用してWebサイトに表示するのが非常に簡単です。C#/ VBでhttpリクエストを作成すると、(最終的には)htmlファイルが返され、ダウジョーンズインデックスの見積もりを解析または検索できます。これはすべて、ASP WebアプリケーションのバックエンドとしてC#/VBで行います。これらは無料のVisualStudio2010Expressで作成できると思います。

于 2011-12-02T19:35:37.800 に答える
1

これを行うのに法的な制限があるかどうかはわかりません。Yahoo Financeからデータを取得する商用(有料)アプリはたくさんあり、何年もの間正常に機能しています。ここでの秘訣は、これらのアプリがユーザーのデバイス(iOS / Android / Windowsデバイス)にインストールされているため、ユーザー自身が個人的に使用するためにYahooFinanceからデータを取得することです。

たぶん、Javascriptを介してYahoo Financeからデータを取得し、それをサーバーに保存しなかった場合、同じケースがプロジェクトに当てはまります。実はそう思います。この場合の唯一の違いは、コードがWebページであるため、ユーザーのデバイスにコードをインストールする必要がないことです。

プロジェクトの法的制限について話し合うために、YQLまたはYahoo Financeのサポートに連絡しようとしましたか?

于 2012-08-10T17:01:41.587 に答える
1

Yahoo!から株式データを取得する関数を作成しました。ファイナンスAPI; ただし、私のコードは.csvファイルをダウンロードします。お役に立てば幸いです。

完全なソースコードとサンプル結果は私のブログにあります。

<?php

/*
Description: Getting Stock Data from Yahoo! Finance
Author URI: http://phpvancouver.ca/
*/

/* 
* More about Yahoo! Finance Tag
* http://www.gummy-stuff.org/Yahoo-data.htm
* http://www.canbike.ca/information-technology/2013/08/10/yahoo-finance-url-download-to-a-csv-file.html
*/

$yahoo_finance_tags = array(
"a" => "Ask",       "a2" => "Average Daily Volume",     "a5" => "Ask Size",
"b" => "Bid",       "b2" => "Ask (Real-time)",      "b3" => "Bid (Real-time)",
"b4" => "Book Value",       "b6" => "Bid Size",     "c" => "Change & Percent Change",
"c1" => "Change",       "c3" => "Commission",       "c6" => "Change (Real-time)",
"c8" => "After Hours Change (Real-time)",       "d" => "Dividend/Share",        "d1" => "Last Trade Date",
"d2" => "Trade Date",       "e" => "Earnings/Share",        "e1" => "Error Indication (returned for symbol changed / invalid)",
"e7" => "EPS Estimate Current Year",        "e8" => "EPS Estimate Next Year",       "e9" => "EPS Estimate Next Quarter",
"f6" => "Float Shares",     "g" => "Day's Low",     "h" => "Day's High",
"j" => "52-week Low",       "k" => "52-week High",      "g1" => "Holdings Gain Percent",
"g3" => "Annualized Gain",      "g4" => "Holdings Gain",        "g5" => "Holdings Gain Percent (Real-time)",
"g6" => "Holdings Gain (Real-time)",        "i" => "More Info",     "i5" => "Order Book (Real-time)",
"j1" => "Market Capitalization",        "j3" => "Market Cap (Real-time)",       "j4" => "EBITDA",
"j5" => "Change From 52-week Low",      "j6" => "Percent Change From 52-week Low",      "k1" => "Last Trade (Real-time) With Time",
"k2" => "Change Percent (Real-time)",       "k3" => "Last Trade Size",      "k4" => "Change From 52-week High",
"k5" => "Percebt Change From 52-week High",     "l" => "Last Trade (With Time)",        "l1" => "Last Trade (Price Only)",
"l2" => "High Limit",       "l3" => "Low Limit",        "m" => "Day's Range",
"m2" => "Day's Range (Real-time)",      "m3" => "50-day Moving Average",        "m4" => "200-day Moving Average",
"m5" => "Change From 200-day Moving Average",       "m6" => "Percent Change From 200-day Moving Average",       "m7" => "Change From 50-day Moving Average",
"m8" => "Percent Change From 50-day Moving Average",        "n" => "Name",      "n4" => "Notes",
"o" => "Open",      "p" => "Previous Close",        "p1" => "Price Paid",
"p2" => "Change in Percent",        "p5" => "Price/Sales",      "p6" => "Price/Book",
"q" => "Ex-Dividend Date",      "r" => "P/E Ratio",     "r1" => "Dividend Pay Date",
"r2" => "P/E Ratio (Real-time)",        "r5" => "PEG Ratio",        "r6" => "Price/EPS Estimate Current Year",
"r7" => "Price/EPS Estimate Next Year",     "s" => "Symbol",        "s1" => "Shares Owned",
"s7" => "Short Ratio",      "t1" => "Last Trade Time",      "t6" => "Trade Links",
"t7" => "Ticker Trend",     "t8" => "1 yr Target Price",        "v" => "Volume",
"v1" => "Holdings Value",       "v7" => "Holdings Value (Real-time)",       "w" => "52-week Range",
"w1" => "Day's Value Change",       "w4" => "Day's Value Change (Real-time)",       "x" => "Stock Exchange",
);

/* This function gets a symbol or an array of symbol as a parameter.
* And it returns an array of the corresponding stock data.
* If an error occurs, the detail of the error is saved in $error_message variable
* which is passed by reference from the parent function
*/

function get_stock_data_from_yahoo_finance_pv($symbol, &$error_message) {

global $yahoo_finance_tags;
$error_message = NULL; // Default value 

$f = ""; // The f parameter in Yahoo! Finance URL
foreach($yahoo_finance_tags as $key => $value)
    $f = $f . $key;

if ( is_array($symbol) ) { // if the symbol is an array

    if ( $symbol == NULL ) { // if the symbol is invalid
        $error_message = "The given symbol is invalid.";
        return -1; // ERROR
    }

    $url = "http://finance.yahoo.com/d/quotes.csv?s=" . implode("+", $symbol) . "&f=" . $f;
    $fp = @fopen($url, "r");
    if ( $fp == FALSE ) { // If the URL can't be opened
        $error_message = "Cannot get data from Yahoo! Finance. The following URL is not accessible, $url";
        return -1; // ERROR
    }

    $arr = array();
    $symbol = explode("+",implode("+", $symbol)); // Eliminate the keys in the symbol array
    $j = 0;
    while ( ($array = @fgetcsv($fp , 4096 , ', ')) !== FALSE ) {
        $i = 0;
        $p = array();
        foreach($yahoo_finance_tags as $key => $value) {
            $p[$key] = $array[$i];
            $i = $i + 1;
        }
        $arr[$symbol[$j]]= $p;
        $j = $j + 1;
    }
    @fclose($fp);
    return $arr;

} else {  // if the symbol is not array 

    if ( strlen($symbol) < 1 || $symbol == NULL ) { // if the symbol is invalid
        $error_message = "The given symbol is invalid.";
        return -1; // ERROR
    }

    $url = "http://finance.yahoo.com/d/quotes.csv?s=" . $symbol . "&f=" . $f;
    $fp = @fopen($url, "r");
    if ( $fp == FALSE ) { // If the URL can't be opened
        $error_message = "Cannot get data from Yahoo! Finance. The following URL is not accessible, $url";
        return -1; // ERROR
    }

    $array = @fgetcsv($fp , 4096 , ', '); 
    $arr = array();
    $i = 0;
    foreach($yahoo_finance_tags as $key => $value) {
        $arr[$key] = $array[$i];
        $i = $i + 1;
    }
    @fclose($fp);       
    return $arr;
}
return -1;
}
于 2013-09-05T04:55:26.553 に答える
0

このスレッドで生成されたアイデアが答えを見つけ、私が探していたものを正確に実行するのに役立ったので、貢献してくれたすべての人に感謝します。この男は、およそ10行のコードでそれを行う方法を説明しています:

http://www.seangw.com/wordpress/index.php/2010/01/formatting-stock-data-from-yahoo-finance/

つまり、基本的に私が行ったのは、彼のコードを切り取って貼り付け、自分のサイトのindex.htmlに配置することだけでした。私のウェブサイトにアクセスすると、興味のあるティッカーの見積もりが表示されます。$ stocklistを変更して、好きな株を入れることができます。また、$ stockFormatのタグを使用して、Yahooからの応答を変更できます。もう一度ありがとう!

于 2011-12-03T12:57:29.513 に答える