什么是 trawl?
Trawl 是一个基于 Node.js 的封装了 Puppeteer 的方便的网站爬虫框架,它可以很方便地自动化爬取网站数据,比如截屏、抓取数据、生成报告等。Trawl 的使用十分简单,只需要进行少量的配置和启动,就可以轻松完成爬虫任务。
安装与配置
安装 trawl 的方式非常简单,只需要使用 npm 即可,输入以下命令即可:
npm install trawl
安装完成后,在项目中的 package.json 文件中,如果已经正常安装,就可以看到已经有 trawl 的依赖项了。
接下来,我们需要进行一些配置。Trawl 运行起来需要一些必要的配置,如下:
const Trawl = require('trawl') const trawl = new Trawl({ url: 'http://www.example.com', headless: false }) trawl.start((page) => { // 这里写爬虫逻辑 })
首先,我们需要引入 trawl,然后创建一个 Trawl 的实例。在实例化 Trawl 对象的时候,我们可以传入一些配置,这里包括两个参数:
- url:网站链接
- headless:是否开启无头模式。无头模式是指在后台运行浏览器,不显示界面,这样可以加快爬虫的速度。
当我们创建好 Trawl 实例之后,我们就可以开始编写爬虫逻辑了。在 start 方法中,我们需要传入一个回调函数,这个回调函数的参数是一个 Puppeteer 的 Page 对象。
trawl.start(async (page) => { await page.goto('http://www.example.com') const title = await page.title() console.log(title); })
在上面的例子中,我们使用了 Puppeteer 的 goto 方法,访问了一个网站,并使用 title 方法获取了网页的标题,最终在控制台输出了这个标题。
需要注意的是,在这个回调函数中,我们需要使用 async/await 去处理异步的操作,比如 goto 方法、获取数据等。
爬虫示例:抓取网页截图
在介绍 Trawl 的更多细节之前,我们来看一个简单的 Trawl 爬虫示例,这个爬虫的功能是抓取一个网站的截图,并保存到本地。
-- -------------------- ---- ------- ----- ----- - ---------------- ----- ----- - --- ------- ---- ------------------------- --------- ----- -- ----------------- ------ -- - ----- ----------------------------------- ----- ---------------------- -------------- --------- ------ -------------------- ----- --------------------- --
在上面的代码中,我们使用了 Puppeteer 的 screenshot 方法,将当前页面截图,并将截图保存到本地。需要注意的是,我们在结束爬虫任务之前,需要手动关闭浏览器,这里使用了 browser.close() 方法。
更多功能:抓取数据和生成报告
Trawl 不仅仅可以对网站进行截图,它还可以抓取数据,生成报告等等。下面我们来看一些更多的例子。
获取元素
在 Trawl 中,获取元素的方式和 jQuery 非常类似,我们可以使用类似于 jQuery 的选择器,来筛选页面中的元素。
trawl.start(async (page) => { await page.goto('http://www.example.com') const element = await page.$('#example') const text = await page.evaluate(element => element.textContent, element) console.log(text); })
在上面的代码中,我们使用了 Puppeteer 的 $ 方法,获取了一个 id 为 example 的元素。然后使用 evaluate 方法,获取了这个元素的文本内容。evaluate 方法的第一个参数是要执行的代码,第二个参数是要操作的 DOM 元素。
运行代码
在 Trawl 中,我们可以直接在浏览器中执行 JavaScript 代码。这在一些需要更高级的操作时非常有用。
trawl.start(async (page) => { await page.goto('http://www.example.com') const result = await page.evaluate(() => { // 在这里执行 JavaScript 代码 return document.title }) console.log(result); })
在上面的代码中,我们使用了 Puppeteer 的 evaluate 方法,将 JavaScript 代码直接执行在浏览器中。这里的代码可以直接访问 DOM 元素和操作元素。
生成报告
Trawl 可以将数据生成 HTML 报告,方便查看分析。我们可以使用 handlebars 或 EJS 等模板引擎,生成自己的报告模板。
-- -------------------- ---- ------- ----- ----- - ---------------- ----- ----- - --- ------- ---- ------------------------- --------- ----- -- ----------------- ------ -- - ----- ----------------------------------- ----- ------ - ----- ---------------- -- - -- ----- ---------- -- ------ -------------- -- ----------------------------------- - ------ ------- -------- ---------- -- -------------------- --
在上面的代码中,我们使用了 Trawl 的 generateReport 方法,将数据传入模板中,最终生成了一个 HTML 报告。
总结
这篇文章中,我们介绍了如何使用 Trawl 这个 Node.js 网站爬虫框架,包括安装与配置、抓取网页截图、获取元素、执行代码、生成报告等等。作为前端开发者,这类工具的使用可以帮助我们更加轻松地获取网站数据,进行数据分析和报告生成,降低了开发成本,提高了开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ac381e8991b448d85c7