从刮网页获取页面标题

var http = require('http'); var urlOpts = {host: 'www.nodejs.org', path: '/', port: '80'}; http.get(urlOpts, function (response) { response.on('data', function (chunk) { var str=chunk.toString(); var re = new RegExp("(<\s*title[^>]*>(.+?)<\s*/\s*title)\>", "g") console.log(str.match(re)); }); }); 

产量

user @ dev〜$ node app.js ['node.js'] null null

我只需要获得标题。

       

网上收集的解决方案 "从刮网页获取页面标题"

我会build议使用RegEx.exec而不是String.match 。 您还可以使用文字语法定义正则expression式,并且只能使用一次:

 var http = require('http'); var urlOpts = {host: 'www.nodejs.org', path: '/', port: '80'}; var re = /(<\s*title[^>]*>(.+?)<\s*\/\s*title)>/gi; http.get(urlOpts, function (response) { response.on('data', function (chunk) { var str=chunk.toString(); var match = re.exec(str); if (match && match[2]) { console.log(match[2]); } }); }); 

该代码还假定title将完全在一个块中,而不是在两个块之间分割。 如果title在组块之间分割,那么最好保持组块的聚合。 一旦findtitle您可能还想停止查找title

尝试这个:

 var re = new RegExp("<title>(.*?)</title>", "i"); console.log(str.match(re)[1]);