Nodejs,有没有办法只加载Htmlurl的头部分?

cedebl8k  于 2023-03-07  发布在  Node.js
关注(0)|答案(2)|浏览(216)

我想防止加载其余的网页,只是加载-头-,在情况下,该网页是太重,我只是需要-标题-所以这是一个总的浪费。任何想法,如果这是可能的或没有?谢谢

8zzbczxx

8zzbczxx1#

最接近的方法是使用content-range request header向服务器请求特定的字节数。
具体操作方法取决于您使用的HTTP API(node:httpfetchaxios等)。
局限性:

  • 你必须猜测多少字节才能得到整个<head>,这很难,例如http://facebook.com</head>结束之前给了我27K的数据,而http://example.com只有940B。
  • 并非所有服务器都支持Content-Range
j91ykkif

j91ykkif2#

另一个不那么干净的解决方案(除了Quentinanswer)是将站点“流式”到一个缓冲区,并在到达</head>时中止。问题是,最后一个块仍然可能包含不止</head>

const https = require("https");

const options = {
  hostname: "stackoverflow.com",
  path: "/",
  method: "GET",
};

const req = https.request(options, res => {
  let buf = Buffer.alloc(0);

  res.on("data", chunk => {
    buf = Buffer.concat([buf, chunk]);
    const headEndIndex = buf.indexOf("</head>");
    if (headEndIndex !== -1){
      buf = buf.slice(0, headEndIndex + "</head>".length);

      console.log(buf.toString());

      res.destroy();
    }
  });
});

req.end();

相关问题