当前位置:   article > 正文

node.js(三)之crawler爬虫模块跟express模块_npm crawler

npm crawler

爬虫跟静态服务器搭建

爬取之前要做的事:

首先下载npm的一个模块

命令:npm i crawler

下载完你会得到一个名字是node_modules文件夹跟一个package-lock.json文件

注意:

使用第三方模块:

  1. 新建一个文件夹,文件夹名字非中文,名字也不能跟模块名字一样
  2. 进到文件夹里,命令运行:npm init -y 初始化一个文件
  3. 下载模块
  4. 使用模块

一、爬取网站的内容

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.$;
            // console.log($('title').text());
            
//文件夹路径自定义            fs.writeFile('./temp/1.txt', $('body').text(), (err) => {
                if (err == null) {
                    console.log('爬去成功')
                }
            })
        }
        done()
    }
})
//爬取的网站内容的地址
c.queue('https://ncov.dxy.cn/ncovh5/view/pneumonia')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

二、爬取网站的文件

var Crawler = require("crawler");
var fs = require('fs');
 
var c = new Crawler({
    encoding:null,
    jQuery:false,// set false to suppress warning message.
    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'}
});
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

三、爬取网站的视频

注意:在爬取网站的视频的时候为了防止人家的反爬技术,我们需要伪装

就是伪装浏览器请求(我们的是服务端请求)

headers:{'User-Agent':'requests'}

四、express模块

使用第三方模块:

  1. 新建一个文件夹,文件夹名字非中文,名字也不能跟模块名字一样
  2. 进到文件夹里,命令运行:npm init -y 初始化一个文件
  3. 下载模块express
  4. 使用模块
// 创建一个静态资源服务器
const express = require('express')

const app = express()

//将项目公开
app.use(express.static('web'))

app.listen(8089, () =>{
    console.log('服务器开启了')
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

五、实现一个简单的get接口

/**
 * 接口:得到一条随机笑话
 * 接口地址:/joke
 * 请求方式:get
 * 参数:无
 * 返回:一条笑话
 */

// 导包
const express = require('express')
// 创建服务器
const app = express()

// 写接口
app.get('/joke', (req, res) => {
    let arr = ['狐狸走路会摔跤,因为狡猾,哈哈', '蔡徐坤是男的', '徐坤爱碧落']
    let index = Math.floor(Math.random() * 3) //1,2,0
    
    // 返回笑话
    res.send(arr[index])
})

// 开启服务器
app.listen(4399, () => {
    console.log('服务器开启了')
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

六、实现一个带参数的post接口

/*
接口:用户登录
请求地址:/login
请求方式:post
请求参数:username password
返回值:登录成功、登录失败
*/

// 导包
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)
    // 由于是post方式传递过来的 参数,所以用req.query这种方式拿不到
    // 使用第三方模块:body-parser
    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服务器开启了')
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

七、实现一个传文件的接口

第三方模块:multer

/*
注册接口
接口地址:/register
请求方式:post
请求参数:username password usericon(用户头像)
返回数据:注册成功、失败

*/
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')
    // file:传递过啦的信息
    console.log(req.file,req.body)
})

app.listen(4399, () => {
    console.log('服务器开启');

})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/396812
推荐阅读
相关标签
  

闽ICP备14008679号