用node实现简单的爬虫案例

353次阅读
没有评论
用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.将处理结果返回给前端

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

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

    神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

    相关文章:

    版权声明:Python教程2022-10-28发表,共计1522字。
    新手QQ群:570568346,欢迎进群讨论 Python51学习