用node实现简单的爬虫案例

爬虫的步骤

1.通过http 或者 https 模块 获取网络资源(网页 记事本 图片 音频 视频)

http.get(url,(res)=>{
  let rawData=''
  res.on('data',(chunk)=>{
    <!-- 传递完一段数据就会触发 chunk 传递的每一段数据 -->
    rawData+=chunk
  })

  res.on('end',()=>{
    <!-- 数据传输完毕 -->
  })
})
.on('error',()=>{
})
具体步骤
const https = require('https')
const fs = require('fs')
const cheerio = require("cheerio")
let url = 'https://www.qunar.com/' //
https.get(url, (res) => {

    //请求成功的回调 res 请求的返回结果对象
    const { statusCode } = res;
    const contentType = res.headers['content-type'];
    console.log(statusCode, contentType)

    // 监听数据改变 当一个数据片段传递完毕后触发
    let rawData = ''
    res.on('data', (chunk) => {
            // 数据传输片段
            rawData += chunk
                // 将每一段数据进行拼接
            console.log('数据变了')
        })
        // 数据传输结束 所有数据传输完毕后触发
    res.on('end', () => {
        // console.log(rawData)
        console.log('数据传输结束')
            // fs.writeFile('./quna.html',rawData,(err)=>{
            //   if(err){
            //     console.log('下载失败哦')
            //   }else{
            //     console.log('下载ok')
            //   }
            // })
            // 使用cheerio 分析数据内容
        const $ = cheerio.load(rawData)
        $('img').each((index, el) => {
            console.log('图片' + index)
            console.log($(el).attr('src'))
        })

    })
}).on('error', (e) => {
    // 监听请求的错误
    console.error(`Got error: ${e.message}`);
});

2.分析内容 (正则表达式)
cheerio 获取网页的具体内容信息

同步异步问题

1.多个异步操作按照固定的顺序执行 -> 回调嵌套->回调地狱->promise的链式调用->async await(伪同步)

框架 express koa egg

node 引入第三方模块 首先在当前文件夹寻找 node_modules 如果没有依次向上寻找

api接口的构成

接口四要素: 接口地址url 请求方法 传递的字段(数据格式) 返回信息
前端:
1.传递数据 传给后端
2.处理后端返回结果
后端:
1.接受前端传递的数据
2.处理数据
3.将处理结果返回给前端

获取数据的方式
  1. get数据 req.query
  2. post 数据 req.body 需要使用第三方插件 body-parser
post 数据格式的多样性

1.x-www-form-urlencode
2.json
3.form-data 格式

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值