返回

掌控历史热点,让掘金不再遗憾

前端

自从我成为一名打工人之后,刷掘金的时间就变得越来越少了。好不容易周末有空的时候,想刷一刷掘金热榜,却发现很多有趣的内容已经错过了。因为热榜的内容总是瞬息万变,稍不注意就会错过宝藏文章。

但是,我发现了一个小技巧,那就是使用 Puppeteer 来获取掘金热榜的历史记录。这样,即使是在忙碌的工作日,也可以轻松追溯历史热点,不错过任何有价值的信息。

Puppeteer 是一个 Node.js 库,可以用来控制无头 Chrome 浏览器。使用 Puppeteer,我们可以模拟浏览器的操作,比如访问页面、点击按钮、输入文本等等。

Puppeteer 的使用非常简单,只需要几行代码就可以实现对浏览器的控制。首先,我们需要安装 Puppeteer:

npm install puppeteer

安装完成后,就可以在我们的代码中使用 Puppeteer 了。以下是一个简单的例子,展示了如何使用 Puppeteer 来获取掘金热榜的历史记录:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('https://juejin.cn/hot');

  const hotList = await page.$('.hot-list li');
  for (const li of hotList) {
    const title = await li.$eval('a', el => el.textContent);
    const url = await li.$eval('a', el => el.href);
    console.log(`${title}: ${url}`);
  }

  await browser.close();
})();

这段代码首先使用 Puppeteer 创建了一个新的浏览器实例和页面实例。然后,它导航到掘金热榜页面,并获取页面中所有带有 .hot-list li 类的元素。这些元素就是热榜中的文章列表。

对于每个文章列表项,代码都会使用 $eval() 方法提取文章标题和链接。最后,将这些信息打印到控制台中。

如果你想获取掘金热榜的历史记录,只需要将上面的代码修改一下,让它循环访问掘金热榜的各个日期即可。例如,你可以使用以下代码来获取过去一周的掘金热榜历史记录:

const puppeteer = require('puppeteer');

const dates = ['2023-08-08', '2023-08-07', '2023-08-06', '2023-08-05', '2023-08-04', '2023-08-03', '2023-08-02'];

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  for (const date of dates) {
    await page.goto(`https://juejin.cn/hot?date=${date}`);

    const hotList = await page.$('.hot-list li');
    for (const li of hotList) {
      const title = await li.$eval('a', el => el.textContent);
      const url = await li.$eval('a', el => el.href);
      console.log(`${title}: ${url}`);
    }
  }

  await browser.close();
})();

这段代码会依次访问过去一周的掘金热榜页面,并获取每个页面中的文章列表。最后,将所有这些信息打印到控制台中。

以上就是如何使用 Puppeteer 来获取掘金热榜的历史记录。希望这篇教程对你有帮助。