爬虫的步骤
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.将处理结果返回给前端
获取数据的方式
- get数据 req.query
- post 数据 req.body 需要使用第三方插件 body-parser
post 数据格式的多样性
1.x-www-form-urlencode
2.json
3.form-data 格式