爬虫跟静态服务器搭建
爬取之前要做的事:
首先下载npm的一个模块
命令:npm i crawler
下载完你会得到一个名字是node_modules文件夹跟一个package-lock.json文件
注意:
使用第三方模块:
新建一个文件夹,文件夹名字非中文,名字也不能跟模块名字一样进到文件夹里,命令运行:npm init -y 初始化一个文件下载模块使用模块
一、爬取网站的内容
var Crawler
= require('crawler')
const fs
= require('fs')
var c
= new Crawler({
maxConnections
: 10,
callback
: function (error
, res
, done
) {
if (error
) {
console
.log(error
);
} else {
var $
= res
.$
;
if (err
== null) {
console
.log('爬去成功')
}
})
}
done()
}
})
c
.queue('https://ncov.dxy.cn/ncovh5/view/pneumonia')
二、爬取网站的文件
var Crawler
= require("crawler");
var fs
= require('fs');
var c
= new Crawler({
encoding
:null,
jQuery
:false,
callback
:function(err
, res
, done
){
if(err
){
console
.error(err
.stack
);
}else{
fs
.createWriteStream(res
.options
.filename
).write(res
.body
);
}
done();
}
});
c
.queue({
uri
:"https://nodejs.org/static/images/logos/nodejs-1920x1200.png",
filename
:"nodejs-1920x1200.png"
headers
:{'User-Agent':'requests'}
});
三、爬取网站的视频
注意:在爬取网站的视频的时候为了防止人家的反爬技术,我们需要伪装
就是伪装浏览器请求(我们的是服务端请求)
headers:{'User-Agent':'requests'}
四、express模块
使用第三方模块:
新建一个文件夹,文件夹名字非中文,名字也不能跟模块名字一样进到文件夹里,命令运行:npm init -y 初始化一个文件下载模块express使用模块
const express
= require('express')
const app
= express()
app
.use(express
.static('web'))
app
.listen(8089, () =>{
console
.log('服务器开启了')
})
五、实现一个简单的get接口
const express
= require('express')
const app
= express()
app
.get('/joke', (req
, res
) => {
let arr
= ['狐狸走路会摔跤,因为狡猾,哈哈', '蔡徐坤是男的', '徐坤爱碧落']
let index
= Math
.floor(Math
.random() * 3)
res
.send(arr
[index
])
})
app
.listen(4399, () => {
console
.log('服务器开启了')
})
六、实现一个带参数的post接口
const express
= require('express')
const bodyParser
= require('body-parser')
const app
= express()
app
.use(bodyParser
.urlencoded({extended
:false}))
app
.post('/login', (req
, res
) => {
console
.log(req
.body
)
console
.log(req
.body
)
if (req
.body
.username
== 'lyb' && req
.body
.password
== '666') {
res
.send({
code
: 200,
msg
:'登录成功'
})
} else {
res
.send({
code
: 400,
msg
:'账号密码不对'
})
}
res
.send('sb')
})
app
.listen(8089, () => {
console
.log('f服务器开启了')
})
七、实现一个传文件的接口
第三方模块:multer
const express
= require('express')
const multer
= require('multer')
const app
= express()
var upload
= multer({ dest
: 'uploads/' })
app
.post('/register', upload
.single('usericon'), (req
, res
) => {
res
.send('sb')
console
.log(req
.file
,req
.body
)
})
app
.listen(4399, () => {
console
.log('服务器开启');
})