2016-12-26 91 views
-1

我有解決方案想從url獲取一些內容。如何使用Cheerio刮取網頁數據?

我有代碼server.js:

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

let url = "domain[dot]com/title-to-video"; 
request(url, function(error, response, html){ 
    if (!error && response.statusCode == 200) { 
     let $ = cheerio.load(html); 
     console.log($.text()); 
    } else { 
     console("We've encountered an error: " + error); 
    } 
}); 

它返回HTML:

<html> 
    <head> 
     <title>Website Title</title> 
    </head> 
    <body> 
     <script> 
      getplayer.setvd1('http://abc[dot]com/video34345453.mp4'); 
      getplayer.setvd2('http://abc[dot]com/video43243234.mp4'); 
     </script> 
    </body> 
</html> 

我想輸出:

{ 
    http://abc[dot]com/video34345453.mp4, 
    http://abc[dot]com/video43243234.mp4 
} 

三江源任何解決方案。

回答

0

在你的if語句,你可以試試:

var $ = cheerio.load(html), 
    script = $('script').text(), 
    scriptParts = script.split(';'); 

console.log('{'); 

for (var i = 0; i < scriptParts.length; i++) { 
    if (scriptParts[i].trim().length > 0) { 
     var startPosition = scriptParts[i].indexOf('(') + 2, 
      endPosition = scriptParts[i].indexOf(')') - 1; 
     console.log(scriptParts[i].slice(startPosition, endPosition) + ','); 
    } 
} 

console.log('}'); 
+0

錯誤'TypeError:cheerio.load(...)。find不是函數'find是jQuery。 –

0

您可以通過以下方式訪問腳本內容:

1) $( '腳本')得到()[0] .attribs [//屬性名稱]

2) let $ = cheerio.load(html,{xmlMode:false});