我想应该有许多 IT 邦帮忙的作者都很关心自己文章的浏览数,像笔者就是一个喜欢三不五时去看看自己文章增加多少浏览量的人;刚好有其他创作者反映希望可以透过工具取得自己所有文章的浏览/Like/留言总数,而不是靠计算机土法炼钢来计算。
藉此机会笔者就研究了一下「puppeteer」这个套件的用法,再花一点时间把小工具写出来,完整的程序码如下:
main.js
const puppeteer = require("puppeteer");
require("dotenv").config();
(async () => {
const ithelp_url = process.env.ITHELP_URL || "https://google.com/";
const browser = await puppeteer.launch({
headless: process.env.HEADLESS == "false" ? false : true,
});
let total_likes = 0;
let total_responses = 0;
let total_views = 0;
let p = 0;
//end = false时while回圈会中断
let end = true;
const page = await browser.newPage();
while (end) {
p == 0 ? await page.goto(ithelp_url) : await page.goto(ithelp_url + `?page=` + p);
await page.waitForSelector(".profile-main__title");
let elements = await page.$$(".qa-condition__count");
if (elements.length > 0) {
for (var i = 0; i < elements.length; i++) {
let tmp_text = await page.evaluate((el) => el.textContent, elements[i]);
if (i % 3 == 0) {
total_likes += parseInt(tmp_text);
} else if (i % 3 == 1) {
total_responses += parseInt(tmp_text);
} else if (i % 3 == 2) {
total_views += parseInt(tmp_text);
}
}
} else {
await browser.close();
end = false;
}
p++;
}
console.log({ "toal likes": total_likes, "toal responses": total_responses, "toal views": total_views });
})();
.env
# 填上自己想要爬虫的页面,下面是笔者个人的文章页面喔
ITHELP_URL=https://ithelp.ithome.com.tw/users/20103256/articles
# 预设不开启浏览器,如果你想开启就改成false
HEADLESS=false
大家也可以到笔者的 Gihub 直接把专案 Clone 下来执行,下面是用笔者在 IT 邦帮忙文章网址的 Demo:
yarn
将套件安装yarn start
即可执行感谢大家的阅读,如果文章有帮助到你,按Like
可以让我更有写文的动力。
我在 Medium 平台 也分享了许多技术文章
❝ 主题涵盖「MIS & DEVOPS、资料库、前端、後端、MICROSFT 365、GOOGLE 云端应用、自我修炼」希望可以帮助遇到相同问题、想自我成长的人。❞
今天介绍的Adapter Pattern是属於结构型模式,以字面上来说不难猜到它是用来让物件与物...
Hello World 的起源 通常我们在测试一个程序或是一个环境是否正常 会习惯使用 Hello ...
此篇会解析 Bootstrap root 是如何自定义生成自己的 CSS 样式。 原始码 使用到两...
当我们环境有Windows及Samba主机时,可以使用Parrot Security上的Enum4l...
如果类别要被继承,可以使用 open 修饰 open class Person(var name :...