Sto usando Node v0.10.11 su Ubuntu 12.04. Non riesco a capire cosa mi manca per far funzionare flussi di url con il modulo di richiesta. Questo programma sta cercando di accedere a un sito di mailing list, trovare i collegamenti per il download per ogni mese, quindi scaricare le pagine per ogni mese.Lancio richiesta nodo: Errore: URI non valido "www.urlworksinbrowser.com" o options.uri è un argomento obbligatorio
Il readme di mikeal dice "Il primo argomento può essere un url o un oggetto opzioni L'unica opzione richiesta è uri, tutti gli altri sono opzionali. parse() "
Se chiamo url.parse (www.targeturl.com), ottengo [Errore: options.uri è un argomento obbligatorio] Se non uso url.parse, ottengo [Errore : URI non valido "www.freelists.org/archive/si-list/06-2013"] (questo collegamento funziona perfettamente nei miei browser)
Ho ridotto il codice a 42 righe. Qualche consiglio benvenuto
var request = require('request'),
url = require('url'),
stream = require('stream'),
cheerio = require('cheerio'), // a reduced jQuery style DOM library
Transform = require('stream').Transform
var DomStripStream = function(target) {
this.target = target;
stream.Transform.call(this,{objectMode: true});
}
DomStripStream.prototype = Object.create(
Transform.prototype, {constructor: {value: DomStripStream}}
)
DomStripStream.prototype.write = function() {
this._transform.apply(this, arguments);
};
DomStripStream.prototype.end = function() {
this._transform.apply(this, arguments);
this.emit("end");
};
DomStripStream.prototype._transform = function(chunk, encoding, callback) {
chunk = chunk ? chunk.toString() : "";
$ = cheerio.load(chunk);
domLinks = $(this.target);
$(domLinks).each(function (i, link) {
currLink = 'www.freelists.org' + $(link).attr('href')
// currLink = url.parse(currLink)
request(currLink, function (error, response, body) {
console.log(error);
})
});
}
var fs = require("fs"),
output = fs.createWriteStream("out.txt"),
mainPage = new DomStripStream('td a')
request('http://www.freelists.org/archive/si-list').
pipe(mainPage).
pipe(output);
Fai http: // o https: // nell'URL – user568109