如何从一个完整的网站(不是单一的页面)获得特定的元素


How to get particular element from a complete website (Not single page)

从一个完整的网站中选取一个元素。在谷歌上搜索了几个小时,没有任何结果。也许我搜索了错误的术语,但我似乎找不到方法。

我把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>";
?>

需要帮助…

使用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);
输出:

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%[...]
    [...]
)

然后您可以使用curl函数访问每个URI,迭代链接数组并处理每次访问以获取数据(这里有文档,这里也有一些技巧)。

的例子:

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