PHPとCURLを使用してsitemap.xmlからすべてのURLを抽出します。私のコードはコンテンツサイトマップで動作しますが(例:http://www.phanmemtoday.com/sitemap.xml?page=1)、サイトマップインデックスでは機能しません(例:http://www.phanmemtoday.com/sitemap.xml)。 私を助けてください。ありがとうございました!sitemap.xmlからすべてのURLをPHPで抽出CURL
<?php
$sUrl="http://domain.com/sitemap.xml";
$aXmlLinks = array($sUrl);
$aOtherLinks = array();
while (!empty($aXmlLinks)) {
foreach ($aXmlLinks as $i =>$sTmpUrl){
unset($aXmlLinks[$i]);
$aTmp = getlinkfromxmlsitemap($sTmpUrl);
echo "Array temp link:<br>";
print_r($aTmp);
foreach ($aTmp as $sTmpUrl2) {
if (strpos($sTmpUrl2, '.xml') !== false) {
array_push($aXmlLinks,$sTmpUrl2);
} else {
array_push($aOtherLinks,$sTmpUrl2);
}
}
}
echo "<br>Array xml link:<br>";
print_r($aXmlLinks);
echo "<br>Array product link:<br>";
print_r($aOtherLinks);
echo "<br>-----------------------------------------<br>";
}
print_r($aOtherLinks);
function getlinkfromxmlsitemap($sUrl) {
// echo "Get link from: $sUrl<br>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0");
curl_setopt($ch, CURLOPT_URL, $sUrl);
$data = curl_exec($ch);
curl_close($ch);
$links = array();
$count = preg_match_all('@<loc>(.+?)<\/loc>@', $data, $matches);
for ($i = 0; $i < $count; ++$i) {
$links[] = $matches[0][$i];
}
return $links;
}
?>
sitemap.xmlとは、少数の児童・サイトマップリンクを持っています。私はすべての子サイトマップのリンクをキャッチし、それらからすべてのページのリンクを抽出したい –