node.js 爬虫

来源:我的博客: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 爬虫)