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
- 引入和具体操作
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('信息收集出现错误');
});
});
- 数据库抓取成功后的截图
这次的分享就到此结束了,有什么建议,可以评论留言