2015-08-13 67 views
0

想要從完整的網站獲取單個元素。 搜索谷歌幾個小時,沒有結果。 也許我搜索錯誤的術語,但我似乎無法找到一種方法來做到這一點。如何從完整的網站獲取特定元素(非單個頁面)

我拿了sitemap.xml,並用下面的代碼得到了它的所有鏈接。

我想使用此XML鏈接從所有鏈接中獲取元素。

<?php 

$urls = array(); 

$DomDocument = new DOMDocument(); 
$DomDocument->preserveWhiteSpace = false; 
$DomDocument->load('https://www.ivory.co.il/sitemap.xml'); 
$DomNodeList = $DomDocument->getElementsByTagName('loc'); 

foreach($DomNodeList as $url) { 
    $urls[] = $url->nodeValue; 
} 

//display it 
echo "<pre>"; 
print_r($urls); 
echo "</pre>"; 

?> 

需要幫助...

+0

是否有某種限制的對你,你不能使用simplexml_file_load($網址)? –

回答

0

使用simplexml_load_file(因爲它是公衆可用):

<?php 
$url = "https://www.ivory.co.il/sitemap.xml"; 

$xml = simplexml_load_file($url) or die ("Error: Cannot create object"); 
$locs = array(); 

for($i=0; $i<count($xml->url); $i++){ 
    $locs[$i] = (string) $xml->url[$i]->loc; 
} 

echo "<pre>"; 
print_r($locs); 

OUTPUT:

Array 
(
    [0] => https://www.ivory.co.il/ 
    [1] => https://www.ivory.co.il/%D7%97%D7%[...] 
    [2] => https://www.ivory.co.il/%D7%98%D7%[...] 
    [3] => https://www.ivory.co.il/%D7%9B%D7%[...] 
    [4] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [5] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [6] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [7] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [8] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [9] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [10] => https://www.ivory.co.il/%D7%9E%D7%[...] 
    [...] 
) 

然後你就可以訪問每一個URI與curl個函數,迭代鏈接數組並處理每個訪問以獲取數據(文檔爲here,以及一些提示here)。

例子:

$curl = curl_init(); 
curl_setopt_array ($curl, array(
      CURLOPT_URL => $locs[1], 
      CURLOPT_RETURNTRANSFER => true) 
); 
$result = curl_exec($curl); 
curl_close ($curl); 
echo $result; 
+0

謝謝!這太合邏輯了!當我從工作中回來時,會在家裏嘗試 –

相關問題