Yahoo Finance 個股頁面 (https://finance.yahoo.com/q?s=SYMBOL&d=t) 含有報價表格,透過特徵標籤 rowspan=3 定位起始行,至 ichart.yahoo.com 圖表連結結束。
getYahooQuote()<?php
function getYahooQuote($symbol = "CCR") {
$url = "https://finance.yahoo.com/q?s=$symbol&d=t";
$fp = @fopen($url, 'r');
if (!$fp) return "無法連線";
$capture = false;
$html = '';
while (!feof($fp)) {
$line = fgets($fp, 4096);
if (strpos($line, 'rowspan=3') !== false) $capture = true;
if ($capture) {
// 移除行首雜訊
if (strpos($line, '{') !== false) {
$pos = strrpos($line, '<');
$line = substr($line, $pos);
}
$html .= $line;
if (strpos($line, "ichart.yahoo.com/v?s=$symbol") !== false) break;
if (strpos($line, '
') !== false) break; // 保險結束
}
}
fclose($fp);
echo $html; // 直接輸出含格式的報價片段
}
// 批次抓取範例
$symbols = ['CCR', 'IIXL', 'SAPE', 'WBVN'];
foreach ($symbols as $sym) {
echo "$sym
";
getYahooQuote($sym);
}
?>
rowspan=3 為報價表格起始標記,ichart.yahoo.com 為結束標記@fopen 抑制警告,feof 迴圈防無限讀取iconv() 轉碼DOMDocument + XPath 替代字串搜尋,抗版面變更能力強