2017-05-30 32 views
1

爲了使用cheerio獲得從節點JS網頁中的所有鏈接,我用工作90%的時間這些行:得到的鏈接 - 的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()); 
    }); 
}); 

但對於某些網站,它例如: http://www.sylire.com/ http://www.bernieshoot.fr/

而我無法弄清楚。有人可以給我提示,以解決這個問題?

注意,我可以使用normaly得到瀏覽器控制檯對這些網站的所有鏈接:

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

問候,

回答

1

這是因爲用戶的藥劑,你需要發送一個在您的要求告訴他們你是「一個真正的瀏覽器」訪問。

的例子,對我的作品:

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

非常感謝您的答覆,它完美的作品現在:-) – Blq56