前言
Web 爬虫作为信息获取的重要手段之一,通常用于数据采集、网站监测等方面。基于 Node.js 和 Express 框架,实现一个简单的 web 爬虫并从中获取数据可为我们的数据处理提供便利。
步骤
步骤一:安装依赖包
首先,在项目目录下打开命令行,输入以下命令安装依赖包:
npm install express axios cheerio
其中:
express
框架用于搭建 web 服务器axios
模块用于发送网络请求cheerio
模块用于解析 HTML
步骤二:创建服务
在项目目录中创建一个 index.js
文件,接着引入 express
和 axios
:
const express = require('express'); const axios = require('axios'); const app = express();
然后在 app
中定义路由页面:
app.get('/', (req, res) => { res.send('Hello World!'); });
最后在监听端口启动服务:
app.listen(3000, () => { console.log('App is running at http://localhost:3000'); });
步骤三:爬取页面数据
在路由页面中使用 axios
模块获取页面数据,再利用 cheerio
模块解析 HTML 并从中获取数据。
-- -------------------- ---- ------- ------------ ----- ----- ---- -- - ----- --- - ------------------------ --- - ----- -------- - ----- --------------- ----- - - ---------------------------- ----- ----- - ------------------ ---------------- ----------- - ----- ------- - ----------------------------- - ---
以上代码爬取百度首页的标题,并将结果返回给客户端。async
和 await
是 JavaScript 中的异步编程方式,它们可以让我们以同步的方式编写异步代码。$
是 cheerio
返回的一个 jQuery 对象,我们可以使用它类似于 jQuery 的方式来获取页面元素。
步骤四:使用 Puppeteer 爬取动态页面
如果要爬取动态页面,以上代码就不可用。这时我们需要使用 Puppeteer,它是一个 Node.js 库,提供了操作 headless Chrome 浏览器的接口。具体使用方式可以参考 Puppeteer 官网。
npm install puppeteer
在 index.js
文件中引入 Puppeteer,并使用它来爬取动态页面:
-- -------------------- ---- ------- ----- --------- - --------------------- ------------------- ----- ----- ---- -- - ----- --- - ------------------------ --- - ----- ------- - ----- ------------------- ----- ---- - ----- ------------------ ----- --------------- ----- ----- - ----- ------------- ----- ---------------- ---------------- ----------- - ----- ------- - ----------------------------- - ---
以上代码与上述代码的区别在于使用了 Puppeteer 提供的浏览器。它可以让我们与浏览器互动,并实现一些像输入文字、点击按钮之类的操作。
总结
通过使用 Node.js 和 Express 框架,我们可以用一些简单的代码编写出一个 web 爬虫,并从中提取出数据。同时,利用 Puppeteer 也可以爬取动态页面。Web 爬虫的应用场景很多,不过需要注意的是,如果不遵守网站的爬虫协议,有可能会导致封禁和法律问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cefe31b5eee0b52567f559