爬虫的步骤
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.将处理结果返回给前端
获取数据的方式
post 数据格式的多样性
1.x-www-form-urlencode
2.json
3.form-data 格式
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试