2016-12-12 1 views
0

J'essaie de renvoyer toutes les URL fournies dans un sitemap de sites Web, par exemple Argos. Une fois que j'ai ces URL, j'ai besoin de répéter ce processus pour renvoyer toutes les URL que les URL résultantes peuvent contenir. Par exemple:Renvoyer une URL de sitemap

http://www.argos.co.uk/sitemap.xml retours:

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 contient alors ses propres liens que je require (ce processus est répété jusqu'à ce qu'une page est atteinte ne contenant pas plus d'URL xml disponibles)

Jusqu'à présent:

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 


    } 
    }                       
}); 

Il pourrait y avoir une solution simple que je néglige, toute aide serait très appréciée, merci.

Répondre

2

Je pense que ce que vous recherchez est une araignée

<?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

Merci, mais il doit être en JavaScript. Désolé de ne pas être clair – Jordan