來(lái)源:我的博客:http://zhangfan.online/index.php?m=home&c=View&a=index&aid=58
添加依賴: npm i gbk
??????????????????npm i jsdom
創(chuàng)建 app.js 文件 復(fù)制以下內(nèi)容完了之后? ? ?node app? 運(yùn)行即可
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);
//?判斷協(xié)議
varhttp='';
if(urlObj.protocol=='http:'){
http=require('http');
}else{
http=require('https');
????}
//?請(qǐng)求連接
letreq=http.request({
'hostname':urlObj.hostname,
'path':urlObj.path
},res=>{
//?解決重定向問(wèn)題
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();
}