Ubuntu 22.04 是一个基于 Debian 的 Linux 操作系统,它是一个长期支持版本 (LTS),提供五年官方支持和安全更新。
它使用现代的 GNOME 桌面环境,优化了性能和稳定性,并包含最新的软件包和工具来支持新硬件。此外,Ubuntu 22.04 增强了安全性,并提供了更严格的默认安全设置和隐私保护。
是的!
Ubuntu 22.04 的代号是 Jammy Jellyfish。它于 2022 年 4 月 21 日发布,是一个长期支持版本,支持五年,直到 2027 年 4 月。
Browserless 是一款强大的浏览器解决方案。基于云集群,Browserless 旨在以可扩展且高效的方式促进复杂的浏览器自动化任务、网络爬取和测试。它基于 Nstbrowser 的全面指纹库,并提供随机指纹切换,以满足用户对数据收集和自动化任务的需求。
您对网络爬取和 Browserless 有什么奇妙的想法和疑问吗?
让我们看看其他开发人员在 Discord 和 Telegram 上分享了什么!
在使用 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.js
和 npm
是否已成功安装。
安装完成后,可以使用以下命令检查已安装的 Node.js 版本:
node -v
npm -v
如果输出 显示版本信息,则表示安装成功。
mkdir nst-browserless && cd nst-browserless
npm init -y
code .
目前,Browserless 仅支持 Puppeteer 和 Playwright。在本教程中,我们选择使用 puppeteer。接下来,是时候安装依赖项了:
npm i --save puppeteer-core
到目前为止,我们已经完成了项目构建。
访问 Browserless
首先,编写一个简单的流程来验证 Browserless 是否可以正常访问:
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 网站抓取一些图片:
找到导航菜单链接:
经过分析,我们可以看到我们需要点击的链接是 menuTopArt
id 下的 li
元素下的一个 a
标签。接下来,让我们进一步分析要爬取的元素:
它显示我们想要的图片所在的元素位于类名为 searchEngineFeaturedProductImage
的 img
元素的 src
值中,并进行懒加载。
修改我们之前编写的代码以完成抓取工作:
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 太棒了!在本博客中,我们了解到:
您可以看到整个过程非常轻便快捷,而且过程也非常简单。
现在开始学习更多 Browserless 的玩法吧!