使用 Node.js 获取网站的标题和图标

506 阅读2分钟

在网站开发过程中,我们有时需要获取某个网站的标题和图标等信息,本文将介绍如何使用 Node.js 快速获取网站的标题和图标。

环境准备

在开始之前,需要安装 Node.js 和 npm。如果你还没有安装,可以从官网下载安装:[Node.js (nodejs.org)](Node.js)

本文还将用到以下依赖:

  • express:快速构建服务器和 API。
  • axios:Promise based HTTP client。
  • cheerio:基于 jQuery 的 HTML 解析器,可以用于从 HTML 中提取信息。

可以在项目目录下通过以下命令安装这些依赖:

npm install express
npm install axios
npm install cheerio

获取网站标题和图标

在 Node.js 中获取网站的标题和图标,我们需要向该网站发送 HTTP 请求并解析返回的 HTML。下面是一个获取网站标题和图标的示例代码:

const express = require('express');
const axios = require('axios');
const cheerio = require('cheerio');

const app = express();

// 获取网站标题和图标
app.get('/website', (req, res) => {
    const siteUrl = req.query.url;
    if (!siteUrl)res.status(400).send('缺少url参数');
    axios.get(siteUrl)
    .then((response) => {
        const html = response.data;
        const $ = cheerio.load(html);
        const title = $('title').text();
        const favicon = $('link[rel="shortcut icon"]').attr('href');
        const urlObj = new URL(favicon, siteUrl);
        const faviconUrl = urlObj.href;
        res.send({
            status:0,
            message:'获取成功',
            title,
            favicon:faviconUrl
        })
    })
    .catch((error) => {
        console.error(error);
        res.status(500).send(error.message);
    });
});

const port = 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

在上述代码中,我们首先定义了一个路由,用于接收 GET 请求,并从请求参数中获取要访问的网站 URL。

然后,我们使用 axios 发送 HTTP 请求,获取该网站的 HTML 内容。接着,使用 cheerio 解析 HTML,获取网站标题和图标的链接。

需要注意的是,有些网站没有图标链接,此时 faviconUrl 的值将为 undefined,需要在程序中进行处理。

最后,我们将获取到的网站标题和图标链接返回给客户端。

总结

本文介绍了如何使用 Node.js 快速获取网站的标题和图标。通过使用 axios 发送 HTTP 请求和 cheerio 解析 HTML,我们可以很容易地获取网站的标题和图标。