如何在 Ubuntu 22.04 上使用 Browserless?

Ubuntu 22.04Ubuntu 22.04 是一个基于 Debian 的 Linux 操作系统,它是一个长期支持版本 (LTS),提供五年官方支持和安全更新。

它使用现代的 GNOME 桌面环境,优化了性能和稳定性,并包含最新的软件包和工具来支持新硬件。此外,Ubuntu 22.04 增强了安全性,并提供了更严格的默认安全设置和隐私保护。

Ubuntu 22.04 仍然受支持吗?

是的!

Ubuntu 22.04 的代号是 Jammy Jellyfish。它于 2022 年 4 月 21 日发布,是一个长期支持版本,支持五年,直到 2027 年 4 月。

什么是 Browserless?

Browserless 是一款强大的浏览器解决方案。基于云集群,Browserless 旨在以可扩展且高效的方式促进复杂的浏览器自动化任务、网络爬取和测试。它基于 Nstbrowser 的全面指纹库,并提供随机指纹切换,以满足用户对数据收集和自动化任务的需求。

您对网络爬取和 Browserless 有什么奇妙的想法和疑问吗?

让我们看看其他开发人员在 DiscordTelegram 上分享了什么!

如何在 Ubuntu 22.04 上使用 Browserless?

先决条件

在使用 Browserless 之前,您需要提前配置 NodeJS。

Ubuntu 22.04 自带 Node.js 软件包。虽然默认版本可能不是最新的,但足以满足基本开发需求。我们使用 apt 来安装它,这是一种简单的方法。

步骤 1. 更新本地软件包索引。

在安装 Node.js 之前,更新本地软件包索引:

sudo apt update

步骤 2. 安装 Node.js。

使用 apt 包管理器安装 Node.js

sudo apt install nodejs -y

步骤 3. 安装节点包管理器。
npm 用于管理 Node.js 模块和包

sudo apt install npm -y

步骤 4. 验证 Node.jsnpm 是否已成功安装。

安装完成后,可以使用以下命令检查已安装的 Node.js 版本:

node -v
npm -v

如果输出 显示版本信息,则表示安装成功。

使用 Browserless

步骤 1. 项目构建
  • 接下来,请创建一个节点项目
bash 复制代码
mkdir nst-browserless && cd nst-browserless
npm init -y
  • 然后,只需选择您喜欢的 IDE 即可。我们在这里使用 VisualStudio:
bash 复制代码
code .

目前,Browserless 仅支持 Puppeteer 和 PlaywrightPlaywright。在本教程中,我们选择使用 puppeteer。接下来,是时候安装依赖项了:

bash 复制代码
npm i --save puppeteer-core

到目前为止,我们已经完成了项目构建。

步骤 2. 编码

访问 Browserless

首先,编写一个简单的流程来验证 Browserless 是否可以正常访问

javascript 复制代码
import puppeteer from "puppeteer-core";

const token = "your token"; // required
const config = {
    proxy: 'your proxy', // required
};
const query = new URLSearchParams({
    token: token, // required
    config: JSON.stringify(config),
});
const browserWSEndpoint = `https://less.nstbrowser.io/connect?${query.toString()}`;

const getBrowser = async () => puppeteer.connect({
    browserWSEndpoint,
    defaultViewport: null,
});

(async () => {
    let browser = null;
    await getBrowser()
        .then(async (browser) => {
            const page = await browser.newPage();
            await page.goto("https://nstbrowser.io");
            await page.screenshot({ path: "screenshot.png", fullPage: true });
            await page.close();
            await browser.close();
        })
        .catch((error) => {
            console.log(error);
        })
        .finally(() => browser?.close());
})()

能够生成屏幕截图表明我们可以正常使用 Browserless:

抓取图片

接下来,我们去Pixels网站抓取一些图片:

  • 从主页顶部的 Wall Art 类别导航中进入子页面
  • 获取前六个图片地址并打印结果。
  1. 网站分析

找到导航菜单链接:

经过分析,我们可以看到我们需要点击的链接是 menuTopArt id 下的 li 元素下的一个 a 标签。接下来,让我们进一步分析要爬取的元素:

它显示我们想要的图片所在的元素位于类名为 searchEngineFeaturedProductImageimg 元素的 src 值中,并进行懒加载。

  1. 抓取图片

修改我们之前编写的代码以完成抓取工作:

javascript 复制代码
import puppeteer from "puppeteer-core";

const token = "your api token";
const config = {
    proxy: 'your proxy', // required
};
const query = new URLSearchParams({
    token: token, // required
    config: JSON.stringify(config),
});
const browserWSEndpoint = `https://less.nstbrowser.io/connect?${query.toString()}`;

const getBrowser = async () => puppeteer.connect({
    browserWSEndpoint,
    defaultViewport: null,
});

(async () => {
    let browser = null;
    const pixelsWebsite = "https://pixels.com";
    await getBrowser()
        .then(async (browser) => {
            const page = await browser.newPage();
            await page.goto(pixelsWebsite);
            await page.waitForSelector("#menuTopArt", { timeout: 30000 });
            await page.click("#menuTopArt a"); // click 'Wall Art' menu
            await page.waitForSelector(".searchEngineFeaturedProductImage", { timeout: 30000 });
            const imageElements = await page.$$('.searchEngineFeaturedProductImage');
            for (const imageElement of imageElements) {
                const src = await page.evaluate(el => el.src, imageElement);
                if (src.includes("Blank.jpg")) { // break if Blank.jgp comes
                    break
                }
                console.log(src);
                // TODO: Add further processing for the image if needed
            }
            await page.close();
            await browser.close();
        })
        .catch((error) => {
            console.log(error);
        })
        .finally(() => browser?.close());
})()

太棒了!在这里您可以找到抓取结果:

总结

Ubuntu 太棒了!在本博客中,我们了解到:

  • 在 Ubuntu 22.04 上安装 NodeJS 的步骤
  • 通过 Puppeteer 使用 Browserless 在 Pixels 网站上抓取图片地址链接数据

您可以看到整个过程非常轻便快捷,而且过程也非常简单。

相关推荐
耶啵奶膘28 分钟前
uniapp-是否删除
linux·前端·uni-app
_.Switch1 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410831 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.1 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-02 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代2 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方3 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘3 小时前
NFS服务器
运维·服务器
苹果醋34 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
不是笨小孩i4 小时前
开源AI图片处理工具HivisionIDPhotos安装与证件照制作指南
ubuntu