nodejs结合mongodb数据库实现数据的抓取与保存

mac2025-01-10  13

nodejs介绍

简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

mongodb数据库

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。(默认的端口是27017);

具体操作

cheerio 是jquery核心功能的一个快速灵活而又简洁的实现,主要是为了用在服务器端需要对DOM进行操作的地方(必装),要抓取的网页进行dom操作 npm i cheerio mongoose Mongoose为模型提供了一种直接的,基于scheme结构去定义你的数据模型(必装) npm i mongoose axios 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用,我们发送请求时使用 详细搭配,请见axios官网 npm i axios iconv-lite 主要用于在编码格式不是utf-8,转换代码的编码格式 npm i icon-lite

具体的设置和配置详情见官网

连接数据库 mongoose .connect('mongodb://localhost:27017/(数据库对应的集合名)', { useNewUrlParser: true, useUnifiedTopology: true, }) .then(res => { console.log('数据库连接成功'); }) .catch(error => { console.log('数据库连接出现错误,请检查你的服务器的连接'); }); 创建数据存储模型 const mongoose = require('mongoose'); const BookSchema = new mongoose.Schema( { coverImg: { type: String, }, title: { type: String, required: true, }, writerAvatar: { type: String, }, author: { type: String, required: true, }, workType: { type: String, }, serial: { type: String, }, descriptions: { type: String, }, articleCount: { type: String, }, bookCategory: { type: mongoose.SchemaTypes.ObjectId, ref: 'BookCategory', //跟列表关联起来 }, }, { timestamps: true } //更新和创建的时间戳 ); module.exports = mongoose.model('book', BookSchema); //以下是 mongoose 的所有合法 SchemaTypes: String Number Date Buffer Boolean Mixed ObjectId Array Decimal128

具体数据类型参见mongoose官网

引入和具体操作 const mongoose = require('mongoose'); //引入猫鼬 const {Book } = require('./models');//引入数据模型 const cheerio = require('cheerio');//对抓取的数据进行dom操作,把数据提取出来 const { get } = require('axios').default; get('http://www.baidu.cn').then(res => { const $ = cheerio.load(res.data); var books = []; $('#tsSlideList li').each(function() { let book = {}; book.coverImgUrl = $(this) .find('img') .attr('src'); //把数据放进数组 books.push(book); }); //insertMany()是一个方法,把数据按照模型存储到本地数据库 Book.insertMany(books) .then(res => { console.log('信息收集成功'); }) .catch(err => { console.log('信息收集出现错误'); }); }); 数据库抓取成功后的截图

这次的分享就到此结束了,有什么建议,可以评论留言

最新回复(0)