美文网首页
node.js 爬虫

node.js 爬虫

作者: 封楼 | 来源:发表于2020-06-12 14:31 被阅读0次

    来源:我的博客:http://zhangfan.online/index.php?m=home&c=View&a=index&aid=58

    添加依赖: npm i gbk

                      npm i jsdom

    创建 app.js 文件 复制以下内容完了之后     node app  运行即可

    constfs=require('fs');

    consturl=require('url');

    constgbk=require('gbk');

    constJSDOM=require('jsdom').JSDOM;

    getUrl('http://zhangfan.online',res=>{

    varhtml=gbk.toString('utf-8',res);

    // console.log(`打印:${html}`);

    //utf8 直接使用res  gbk 使用html 

    letDOM=newJSDOM(res);

    letdocument=DOM.window.document;

    console.log(document.querySelector('.info p').innerHTML);

    fs.writeFile('download.html',res,()=>{

    // console.log(`保存成功${res}`);

        })

    });

    functiongetUrl(sUrl,backBlock){

    varurlObj=url.parse(sUrl);

    // 判断协议

    varhttp='';

    if(urlObj.protocol=='http:'){

    http=require('http');

    }else{

    http=require('https');

        }

    // 请求连接

    letreq=http.request({

    'hostname':urlObj.hostname,

    'path':urlObj.path

    },res=>{

    // 解决重定向问题

    if(res.statusCode==200){

    console.log('end');

    vararr= [];

    res.on('data',buff=>{

    arr.push(buff);

                });

    res.on('end',()=>{

    letb=Buffer.concat(arr);

    backBlock&&backBlock(b);

                });

    }elseif(res.statusCode==302||res.statusCode==301){

    // 这里使用了递归

    getUrl(res.headers.location,backBlock);

            }

        })

    // req.on('error');

    req.end();

    }

    相关文章

      网友评论

          本文标题:node.js 爬虫

          本文链接:https://www.haomeiwen.com/subject/tfggtktx.html