【问题标题】:Http request document headHttp请求文件头
【发布时间】:2015-03-08 22:43:51
【问题描述】:

我需要获取文档标题。

所以我尝试发送请求,并通过响应 html 获取标题。

示例(通过 nodejs 模块request):

request.get("http://www.google.com", function(err, res, body) {
  var title = body.match(/<title>(.*?)</title>/g)[1];
})

但是当文件特别大的时候。请求很慢。

有没有办法快速获取文档标题?请建议。谢谢。

【问题讨论】:

  • 除非文档是流式传输的(并且可能没有经过 gzip 压缩),并且您可以在内容全部接收之前访问该内容。
  • @AlexanderO'Mara Request 可以在收到解压缩数据流时为您提供:github.com/request/request#examples(第二个示例)。
  • @laggingreflex 好电话!答案大概在那里。

标签: javascript html node.js http document


【解决方案1】:

请求可以在收到时为您提供解压缩数据流:http://github.com/request/request#examples(第二个示例)

您可以继续将接收到的数据附加到缓冲区中,并检查它是否具有您想要的内容(“&lt;/title&gt;”)。一旦你得到它,你就可以得到你的标题并忽略流中缓冲区的其余部分。

var request = require('request');
var buffer = '';
var flag = 0;
request({
        method: 'GET',
        uri: 'http://www.google.com',
        gzip: true
    }).on('data', function(data) {
        if (buffer.indexOf('</title>') == -1)
            buffer += data;
        else done();
    });
function done() {
    if (flag) return;
    flag++;
    var title = buffer.match(/<title>(.*?)<\/title>/)[1];
    console.log(title);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 2015-07-13
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2012-01-06
    相关资源
    最近更新 更多