返回
掌控历史热点,让掘金不再遗憾
前端
2023-11-25 03:12:57
自从我成为一名打工人之后,刷掘金的时间就变得越来越少了。好不容易周末有空的时候,想刷一刷掘金热榜,却发现很多有趣的内容已经错过了。因为热榜的内容总是瞬息万变,稍不注意就会错过宝藏文章。
但是,我发现了一个小技巧,那就是使用 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 来获取掘金热榜的历史记录。希望这篇教程对你有帮助。