zoukankan      html  css  js  c++  java
  • node简易爬虫

    1. http模块,网络请求

    cheerio库, 将html格式的字符串转成类dom结构,之后可以分析结构,通过jq的语法选中其中的元素。

    /*
    1. 请求网站数据
    2. 将数据保存本地文件
    */
    let picArr = []
    const http=require('https')
    const fs=require('fs')
    const cheerio=require('cheerio')
    //let url='https://www.qunar.com/'
    let url='https://oasgames.com/pc/zh/home.html'
    //let url ='http://www.ziroom.com/'
    let json='http://nodejs.org/dist/index.json'
    
    http.get(url,(res)=>{
        // 安全判断
        const { statusCode } = res;  //状态码
        const contentType = res.headers['content-type']; //文件类型
    
        //console.log(statusCode,contentType)
    
        let err =null;
        if(statusCode!==200){
            err=new Error('请求状态错误')
        }else if(!/^text/html/.test(contentType)){
            //格式类型是网页
            err=new Error('请求类型错误')
        }
    
    
        if(err){
            console.log(err)
            res.resume(); // 重置缓存
            return false
        }
    
    
        //数据处理
        let rawData=''
        res.on('data',(chunk)=>{
            console.log('----')
            rawData+=chunk.toString('utf8')
            // console.log(chunk.toString('utf8'))
        })
    
        // 数据流传输完毕
        res.on('end',()=>{
             fs.writeFileSync('./bibi.html',rawData)
            //通过cheerio 分析
            let $=cheerio.load(rawData)// 将请求的网页数据进行转化
    
            $('video').each((index,el)=>{
                picArr.push({
                    'type':'video',
                    "src": $(el).attr('src')
                })
            })
            $('img').each((index,el)=>{
                picArr.push({
                    'type':'img',
                    "src": $(el).attr('src')
                })
            })
            console.log('picArr',picArr)
            fs.writeFileSync('./pic.js',picArr)
    
        })
    
    }).on('error',(err)=>{
        console.log('请求错误')
    })

      

  • 相关阅读:
    Java 8 – StringJoiner example
    Java – Generate random integers in a rangejava获取某个范围内的一个随机数
    Eclipse 中选中一个单词 ,其他相同的单词颜色就会变化
    JAR,WAR,EAR区别
    eclipse中java项目转成Web项目
    备忘
    iphone openssh
    如何解决Cydia提示错误
    加密备忘
    Ubuntu系统安装VMware Tools的简单方法
  • 原文地址:https://www.cnblogs.com/catherLee/p/13093111.html
Copyright © 2011-2022 走看看