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

米国企業の株価チャート画像をサーバーに保存したいと思っています。
下記のようなPHPでいけると思ったのですがサーバーから大元のGIFにアクセスできません。
なにか方法はあるのでしょうか?
※Hatenaのtopページロゴなどは問題なくアクセスでき、保存できました。

$image_url = 'http://hoge.com/hoge.gif' ;
$file_path = './chart_image/' ;
$img = file_get_contents($image_url) ;
file_put_contents($file_path."hoge.gif", $img) ;


このページ内のチャートです。
http://jp.quote.com/us/stocks/chart.action?s=AAPL&chartUi.period=V&chartUi.bardensity=LOW&chartUi.bartype=CANDLE&chartUi.size=620x300&chartUi.minutes=60

チャート自体のURLです。
http://charts.quote.com/cis/qc?cont=AAPL&period=V&varminutes=60&size=620x300&bartype=CANDLE&bardensity=LOW&showvaluemarkers=false&showextendednames=true&showdatainheader=false

●質問者: recon
●カテゴリ:インターネット ウェブ制作
✍キーワード:GIF Hatena hoge PHP TOP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tdoi
●35ポイント ベストアンサー

該当サイトにHTTPリクエストをいろいろ送って確認してみました。

このサイト自体は、サーブレットで構築されているようですが、どうやら、User-Agentを送らないとExceptionで落ちるバグが残っているようです。

そのため、User-Agentを何らかの形で送ってあげれば、取得できます。

file_get_contentsの場合は、どうやらUser-Agentを送らないようなので、サーバ側のエラーでうまく画像が取得できないようです。


どうするかですが、手っ取り早いのは、PEARのHTTP_Requestを使うことでしょうか。

HTTP_Requestだと、適当なUser-Agentをつけてアクセスしてくれるので、画像が取得できます。

こんな感じで取得で動くことは確認しています。

require_once('HTTP/Request.php');

$url = '画像へのURL';
$req =& new HTTP_Request($url);
$result = $req->sendRequest();
if (!PEAR::isError($result)) {
 $img = $req->getResponseBody();
 file_put_contents('./chart.gif', $img);
}

参考になれば。

◎質問者からの返答

早速のご回答感謝いたします。問題なく表示・保存できました。


2 ● pahoo
●35ポイント

ご質問のサイトからPHPで画像ファイルを取得する手段については、過去質問「PHPを使ってHTMLで画像表示させるようにしたいのですが・・・」で回答しました。参考にしてください。


当該サイトはUser-Agentを要求するので、過去質問で回答した方式で処理してみてください。

また、過去質問では png 画像がChunked形式でしたが、gif 画像も同様の可能があります。ご注意ください。

◎質問者からの返答

早速のご回答感謝いたします。過去質問があったのですね。参考にさせていただきます。

関連質問


●質問をもっと探す●



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