Node.js: estrarre i link da una pagina remota

Node.js: estrarre i link da una pagina remota

Chi proviene da un linguaggio lato server come PHP e si approccia a Node.js in genere vuole subito cercare di replicare nel nuovo linguaggio le feature più comuni del linguaggio di partenza. In tal senso estrarre i link HTML da una pagina remota è sicuramente una delle feature più richieste.

Come in PHP, anche in Node.js occorre eseguire una richiesta remota ed utilizzare le espressioni regolari per estrarre la marcatura HTML voluta. La differenza sta nel fatto che il parsing ed il reperimento dei dati avvengono in modo asincrono in Node.js.

In Node.js la procedura è la seguente:


var http = require('http');  // Modulo HTTP

// Opzioni della richiesta GET
var options = {
  host: 'gabrieleromanato.com',
  port: 80,
  path: '/2013/04/jquery-gestire-gli-iframe/',
  method: 'GET'
};

// Funzione di utility
var getLinks = function(data) {
  var regexp = /<a\shref=".+">.+<\/a>/gi;
  var matches = data.match(regexp);
  return matches;	
};





var req = http.request(options, function(res) {
  var data = '';
  res.on('data', function (chunk) {
  	data += chunk;	// Assemblo i dati mentre questi vengono reperiti 
  });

  res.on('end', function() {
    // Richiesta completa: eseguo il parsing
    var links = getLinks(data),
        len = links.length,
        i, 
        output = '';
    for(i = 0; i < len; ++i) {
      var link = links[i];
      output += link + '\n';
    }	
    console.log(output);
  });

});

req.end();

E il risultato è il seguente:

node-get-links

Torna su