Хаи.
Обожаю гугл.
30 минутный php скрипт, который грабит исторические данные с Google Financial по всем стакам в период с 1 января 1995 по 1 июля 2011 и сохраняет в CSV файлики вида <CUR_DIR>/<MarketName>/<Ticker>.csv
Внутри данные OCHL + Volume.
Я его правда еще не запускал на CID до 30к, но думаю там должно в итоге получиться не мало стаков.
–
date_default_timezone_set('UTC');
-
-
define('GRABBER_PATH', dirname(__FILE__));
-
-
// Jan-1-1995 up to Jul-1-2011
-
$url = 'http://www.google.com/finance/historical?cid=!CID!&startdate=Jan+1%2C+1995&enddate=Jul+1%2C+2011&num=30';
-
$exportUrlPostfix = '&output=csv';
-
-
// The easiest way
-
$pattern = '/\<title\>;([^:]+): ([\w+]+):([\w\d]+) historical price/';
-
-
// CID up to 30k 'cause not every cid is an existings stock
-
$cidStart = 1;
-
$cidEnd = 30000;
-
-
for ($cid = $cidStart; $cid < $cidEnd; $cid++) {
-
$curUrl = str_replace('!CID!', $cid, $url);
-
-
$pageHtml = @file_get_contents($curUrl, false, null, 0, 1000);
-
if (empty($pageHtml)) {
-
continue;
-
}
-
-
if (!preg_match($pattern, $pageHtml, $matches)) {
-
continue;
-
}
-
-
$companyName = $matches[1];
-
$market = $matches[2];
-
$ticker = $matches[3];
-
-
echo "[CID=$cid] Found: $companyName ($market:$ticker)\n";
-
-
if (!file_exists(GRABBER_PATH . '/' . $market)) {
-
mkdir(GRABBER_PATH . '/' . $market);
-
}
-
-
if (!is_dir(GRABBER_PATH . '/' . $market)) {
-
echo " * ERR: " . GRABBER_PATH . '/' . $market . " is not dir\n";
-
continue;
-
}
-
-
$downloadUrl = $curUrl . $exportUrlPostfix;
-
$csvData = @file_get_contents($downloadUrl);
-
if (empty($csvData)) {
-
echo " * ERR: Cannot grab data from $downloadUrl\n";
-
continue;
-
}
-
-
$csvFile = GRABBER_PATH . '/' . $market . '/' . $ticker . '.csv';
-
if (!file_put_contents($csvFile, $csvData)) {
-
echo " * ERR: Cannot save CSV data to $csvFile\n";
-
continue;
-
}
-
}
–
апдейт: CID нужно ставить гораздо больше… к примеру на первый 1000 (тысячу) CID’ов пришлось только порядка 30 акций.