2016-12-26 38 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});