阿飞老师nodejs语录2——request重点整理

作者:admin     发表时间:8/20/2019

简易爬虫重点总结

* 获取url

* 分析url页面

    - 懒加载  京东商品图

        - 用自定义属性存储图片,当滚轮滚到底相应位置时,把自定义属性值赋值给src

    - 瀑布流  百度搜索图片

        - 鼠标滚到接近底部时,发现没有图片,就发送ajax到后台请求图片数据,再加载渲染

* 正则匹配或加载虚拟DOM获取数据

* 输出或写入文件

    - fs.writeFile(data)

    - pipe(fs.createWriteStream(file))


* request模块

    - request(options,(err,res,body) => {})

        - options 对象

            - method 默认为get

            - url

                 - 注意关键字不要直接用中文,可以先转码 encodeURI()

            - headers

                - "user-agent" 伪装成浏览器

        - res 响应头信息

        - body

    - request(url,(err,res,body) => {})

    - request(url).pipe(fs.createWriteStream(file)

        - request(url)返回的本身是流数据


* jsdom模块 不常用

    - 引入 const {JSDOM} = reuqire("jsdom")

    - 加载虚拟DOM let {window} = new JSDOM(string)

    - 像源生js一样操作 window.document.querySelectAll()


* cheerio模块 常用

    - 引入 let cheerio = require("cheerio")

    - 加载虚拟DOM let $ = cheerio.load(string)

    - 像jquery一样操作


* 数组去重

    - [...new Set(arr)]


* 设置不重名的文件名

     - (("" + new Date().getTime() + Math.ceil(Math.random() * 10000)) + index)*1).toString(16)

        - 时间戳 new Date().getTime()

        - 随机数 Math.ceil(Math.random() * 10000))

        - 获取文件的序号 index

        - 转为16进制表示的字符串 num.toString(16)

评论