连接数据库
node.js连接数据库需要先安装mysql包
npm install mysql
连接数据库操作
const mysql = require('mysql')
let options = {
host: "localhost",
user: "root",
password: "123123",
port: "3306",//可选
database: "mall"
}
//创建与数据库连接的对象
let con = mysql.createConnection(options)
con.connect((err) => {
if(err) {
console.log(err)
}else {
console.log("连接成功")
}
})
操作数据库
对数据库的操作
// 查询表
let strSql = "select * from students"
con.query(strSql,(err,results,fields) => {
console.log(err)
console.log(results)
})
//删除表的操作
let strSql2 = "drop table students"
con.query(strSql2,(err,results) => {
console.log(err)
console.log(results)
})
//删除库
let strSql3 = "drop database study01"
con.query(strSql3,(err,results) => {
console.log(err)
console.log(results)
})
// 创建库(要先把options里面的databases删除)
let strSql4 = "create database mall"
con.query(strSql4,(err,results) => {
console.log(err)
console.log(results)
})
//插入操作
let strSql5 = "insert into users (id,name,number) values (?,?,?)"
con.query(strSql5,["1","tyh","123"],(err,res) => {
console.log(err)
console.log(res)
})
将爬取的数据存入数据库
这边做个小练习,将爬取的数据存放在数据库中
spider.js
const mysql = require('mysql')
const axios = require('axios')
const cheerio = require('cheerio')
let page = 1
let count = 1
let con = mysql.createConnection({
host: "localhost",
user: "root",
password: "123123",
database: "mall"
})
//获取第N个页面所有书籍的连接
async function getPageUrl(num) {
let httpUrl = "https://sobooks.cc/page/" + num
let res = await axios.get(httpUrl)
let $ = cheerio.load(res.data)
$('#cardslist .card-item .thumb-img>a').each((i,ele) => {
let href = $(ele).attr("href")
//根据地址访问详情页面
getBookInfo(href)
})
}
getPageUrl(page)
async function getBookInfo(href) {
let res = await axios.get(href)
let $ = cheerio.load(res.data)
//书籍图片
let bookimg = $('.article-content .bookpic img').attr('src')
//书籍名称
let bookname = $('.article-content .bookinfo li:nth-child(1)').text()
bookname = bookname.substring(3,bookname.length)
//书籍作者
let author = $('.article-content .bookinfo li:nth-child(2)').text()
author = author.substring(3,author.length)
//书籍标签
let tag = $('.article-content .bookinfo li:nth-child(4)').text()
tag = tag.substring(3,tag.length)
//时间
let pubtime = $('.article-content .bookinfo li:nth-child(5)').text()
pubtime = pubtime.substring(3,pubtime.length)
//种类
let cataory = $('#mute-category > a').text().trim()
let arr = [bookname,author,tag,pubtime,bookimg,cataory]
//插入数据库
let strSql = "insert into books (bookname,author,tag,pubtime,bookimg,cataory) values (?,?,?,?,?,?)"
con.query(strSql,arr,(err,res) => {
console.log("插入完成")
})
}
运行spider.js后数据库中数据则已经存放