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('请求错误')
    })

      

  • 相关阅读:
    Linux基础篇之软件源码包安装
    11-1 网络协议和管理
    bash-2 httpd服务的源码编译安装脚本
    8-1 文本三级剑客之sed
    9-3 磁盘存储与分区
    9-2 yum,dnf和apt
    9-1 软件包管理
    bash-1 初始化CentOS系统的初始化脚本
    3-3 man手册介绍
    5-3 文件权限
  • 原文地址:https://www.cnblogs.com/catherLee/p/13093111.html
Copyright © 2011-2022 走看看