NodeJS簡單爬蟲
- 最近一直在追火星的一本書,而後每次都要去網站看,感受很麻煩,因而,想起用爬蟲爬取章節,務實派,說幹就幹!
爬取思路
- 一、該網站的頁面呈現出必定的規律
- 二、使用NodeJS的request模塊發起請求
- 三、對獲取到的數據進行處理
- 四、使用NodeJS的fs模塊將數據寫入文件
源碼說明
var request = require('request');
var fs=require("fs");
var title="";
var article="";
var i=1;
var ws;
var get=()=>{
request('http://www.nitianxieshen.com/'+i+'.html', function (error, response, body) {
try{
if (!error && response.statusCode == 200) {
title = body.match(/<div class="post_title">([\s\S]*)<\/h1>/i)[0].split("</div>")[0];
article = body.match(/<div class="post_entry">([\s\S]*)<\/div>/i)[0].split("</div>")[0];
title=title.replace("h1", "").replace("h1", "").replace(/[</a-z_"=>\r\n ]/g, "");
article=article.replace(/br/g, "\r\n").replace(/[</a-z1=_".:&;>]/g, "");
ws=fs.createWriteStream(title+".txt");
ws.write(title+"\r\n\r\n","utf8");
ws.write(article,"utf8");
ws.end();
console.log(title+".txt"+" 正在寫入...");
ws.on("finish", ()=>console.log("寫入完成!"));
ws.on("error", ()=>console.log("寫入錯誤!"));
}
}catch(err){
console.log("本次爬取失敗");
if(i>2900) clearInterval(timer);
}
})
}
var timer=setInterval(function(){
get();
i++;
}, 2000);
複製代碼
效果
聲明
- 本文章僅供學習,爬取的資源請在爬取後的24小時內刪除,勿將爬取到的東西商用,喜歡火星的能夠支持火星哈。