2017-06-16 36 views
1

所以我正在嘗試使用PHP抓取可能性,並且我想對正在回顯的數據更精確一些。下面的代碼是實現此輸出:道指所有的時間,屢創新高的關閉:2017年6月14日,(21,374.56)php scrape:只回聲第三個字

<?php 

// weather forecast los angeles 
$doc = new DOMDocument; 

// We don't want to bother with white spaces 
$doc->preserveWhiteSpace = false; 


$doc->strictErrorChecking = false; 
$doc->recover = true; 

$doc->loadHTMLFile('https://finance.yahoo.com/quote/%5EGSPC?p=%5EGSPC'); 

$xpath = new DOMXPath($doc); 

$query = "//span[@class='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)']"; 

$entries = $xpath->query($query); 
foreach ($entries as $entry) { 
echo trim($entry->textContent); // use `trim` to eliminate spaces 
} 
?> 

有沒有一種可能的方式的人都知道,我可以指定只輸出第三字/值在刮擦期間出現。所以在上面的例子中,只有「時間」最終會得到echo'd。當我說出單詞/價值時,我想我正在識別出具有「」空格。

這可能嗎?對於我缺乏PHP技能感到抱歉,這很新鮮。如果我能夠精確地回答這個問題,那會帶來很多可能性。

最佳,-Wilson

+0

你好,2,432.46這是你的輸出你想從這裏得到什麼? –

+0

我想只能選擇出現在輸出中的第三個單詞/值。第三個詞是「時間」。如果我選擇了2,432.46,這很好,我相信這將是第九個值/字。我通過「」空格 – Masteryogurt

回答

1

您可以使用爆炸()PHP函數,它使用一個字符串轉換成一個數組。

$entries = $xpath->query($query); 
foreach ($entries as $entry) { 
    $result = trim($entry->textContent); 
    $ret_ = explode(' ', $result); 
    echo $ret_[2]; 

} 

Another one 

<?php 

$text = "DJIA All Time, Record-High Close: June 14, 2017 (21,374.56)"; 

$text_array = explode(' ', $text); 

print_r($text_array); 
echo $text_array[2]; 
?> 
+0

定義了這個NVM修正了它!剛剛拿出行echo $ text_array [2]; //結果是 – Masteryogurt

+0

謝謝Saroj!你已經超級快速和超級有用。現在真的很想探索這個。 – Masteryogurt

+0

很高興幫助你。 –