2017-05-30 6 views
1

Um alle Links von einer Webseite mit Knoten JS mit cheerio zu bekommen, verwende ich diese Zeilen, die 90% der Zeit arbeiten:Get Links mit cheerio Ausgabe - NodeJS

const request = require('request'); 
const cheerio = require('cheerio'); 

var url = 'an URL'; 
request(url, function(err, resp, body){ 
    $ = cheerio.load(body); 
    links = $('a'); 
    $(links).each(function(i, link){ 
    console.log($(link).text()); 
    }); 
}); 

Aber für einige Websites, es funktioniert nicht richtig, zum Beispiel: http://www.sylire.com/ http://www.bernieshoot.fr/

Und ich kann es nicht herausgefunden. Konnte mir jemand Tipps geben, um dieses Problem zu lösen?

Bitte beachte, dass ich normalerweise alle Links für diese Webseite in Browser-Konsole bekommen mit:

var link = document.querySelectorAll("a"); 
for (var i of link){ 
    console.log(i.text); 
} 

Grüße,

Antwort

1

Es ist wegen der User-Agent, müssen Sie in Ihrer Anfrage senden Sag ihnen, dass du "ein tatsächlicher Browser" bist.

Beispiel, das funktioniert für mich:

const request = require('request'); 
const cheerio = require('cheerio'); 

var url = 'http://www.sylire.com/'; 

var customHeaderRequest = request.defaults({ 
    headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'} 
}) 

customHeaderRequest.get(url, function(err, resp, body){ 
    $ = cheerio.load(body); 
    links = $('a'); 
    $(links).each(function(i, link){ 
    console.log($(link).text()); 
    }); 
}); 
+0

Vielen Dank für Sie antworten, es perfekt funktioniert jetzt :-) – Blq56