歡迎關(guān)注我的微信公眾號(hào) "前端攻城",我不定期會(huì)更新一些內(nèi)容。
我就直接上代碼了:)
var http = require('http');
var cheerio = require('cheerio');
var url = "http://www.baidu.com"; //初始url
function fetchPage(x) { //封裝了一層函數(shù)
startRequest(x);
}
function startRequest(x) {
//采用http模塊向服務(wù)器發(fā)起一次get請(qǐng)求
http.get(x, function (res) {
var html = ''; //用來(lái)存儲(chǔ)請(qǐng)求網(wǎng)頁(yè)的整個(gè)html內(nèi)容
var titles = [];
res.setEncoding('utf-8'); //防止中文亂碼
//監(jiān)聽(tīng)data事件,每次取一塊數(shù)據(jù)
res.on('data', function (chunk) {
html += chunk;
});
//監(jiān)聽(tīng)end事件,如果整個(gè)網(wǎng)頁(yè)內(nèi)容的html都獲取完畢,就執(zhí)行回調(diào)函數(shù)
res.on('end', function () {
// console.log(html)
var $ = cheerio.load(html, {decodeEntities: false});
//采用cheerio模塊解析 html
var aa = "";
aa += $('title').html().trim();
console.log(aa);
});
}).on('error', function (err) {
console.log(err);
});
}
fetchPage(url); //主程序開始運(yùn)行
我只是簡(jiǎn)單使用了 http 模塊,以及一個(gè)第三方的 cheerio 模塊(node 中的jquery)用來(lái)解析html。如果你需要一個(gè)更復(fù)雜的爬蟲,可以自己引入一些第三方模塊,實(shí)現(xiàn)模擬點(diǎn)擊、下載圖片等功能。