2016-12-12 2 views
0

Я пытаюсь вернуть все URL-адреса, предоставленные на веб-сайтах, например, карту сайта Argos. После того, как у меня есть эти URL-адреса, мне нужно повторить этот процесс, чтобы возвращать любые URL-адреса, которые могут содержать результирующие URL-адреса. Например:Возврат карты сайта URL-адреса

http://www.argos.co.uk/sitemap.xml возвращается:

http://www.argos. co.uk/product.xml 
http://www.argos. co.uk/product2.xml 
http://www.argos. co.uk/catalogue.xml 
http://www.argos. co.uk/buyers_guides.xml 
http://www.argos. co.uk/features_and_articles.xml 
http://www.argos. co.uk/static_pages.xml 
http://www.argos. co.uk/store_pages.xml 

http://www.argos.co.uk/product.xml затем содержит свои собственные ссылки, которые я требую (этот процесс повторяется до тех пор, страница не будет достигнуто, не содержащий больше URL, XML, доступные)

До сих пор:

var urls = require('sitemap-urls'); //package to return xml links from sitemap 
var cheerio = require('cheerio'); 
var request = require('request') 

// Returns all xml urls located within page source 
request('http://www.argos.co.uk/sitemap.xml', function (error, response, html) { 
    var sitemap = html; 
    var results = urls.extractUrls(sitemap); 

// If results returned, loop to make sitemap equal each url until array end 
    if(results) { 
    for(i = 0; i < results.length; i++) { 
     sitemap = results[i] 
     console.log(sitemap) 

    // Need to repeat url return process for each url returned 


    } 
    }                       
}); 

Может быть, простое решение, которое я пропускаю, любая помощь будет очень признательна, спасибо.

ответ

2

Я думаю, что вы ищете паук

<?php 
function crawl_page($url, $depth = 5) 
{ 
    static $seen = array(); 
    if (isset($seen[$url]) || $depth === 0) { 
     return; 
    } 

    $seen[$url] = true; 

    $dom = new DOMDocument('1.0'); 
    @$dom->loadHTMLFile($url); 

    $anchors = $dom->getElementsByTagName('a'); 
    foreach ($anchors as $element) { 
     $href = $element->getAttribute('href'); 
    if (0 !== strpos($href, 'http')) { 
      $path = '/' . ltrim($href, '/'); 
      if (extension_loaded('http')) { 
       $href = http_build_url($url, array('path' => $path)); 
      } else { 
       $parts = parse_url($url); 
       $href = $parts['scheme'] . '://'; 
       if (isset($parts['user']) && isset($parts['pass'])) { 
        $href .= $parts['user'] . ':' . $parts['pass'] . '@'; 
       } 
       $href .= $parts['host']; 
       if (isset($parts['port'])) { 
        $href .= ':' . $parts['port']; 
       } 
       $href .= $path; 
      } 
     } 
     crawl_page($href, $depth - 1); 
    } 
    echo "URL:",$url,PHP_EOL,"CONTENT:",PHP_EOL,$dom->saveHTML(),PHP_EOL,PHP_EOL; 
} 
crawl_page("http://hobodave.com", 2); 
+0

Спасибо, но это должно быть в JavaScript. Извините за то, что вы не поняли этого – Jordan

Смежные вопросы