當前位置:編程學習大全網 - 編程語言 - 如何使用nodejs做爬蟲程序

如何使用nodejs做爬蟲程序

NodeJS制作爬蟲全過程:

1、建立項目craelr-demo

建立壹個Express項目,然後將app.js的文件內容全部刪除,因為暫時不需要在Web端展示內容。當然我們也可以在空文件夾下直接 npm install express來使用需要的Express功能。

2、目標網站分析

如圖,這是CNode首頁壹部分div標簽,就是通過這壹系列的id、class來定位需要的信息。

3、使用superagent獲取源數據

superagent就是ajax API來使用的Http庫,它的使用方法與jQuery差不多,通過它發起get請求,在回調函數中輸出結果。

代碼如下:

var express = require('express');

var url = require('url'); //解析操作url

var superagent = require('superagent'); //這三個外部依賴不要忘記npm install

var cheerio = require('cheerio');

var eventproxy = require('eventproxy');

var targetUrl = 'odejs.org/';

superagent.get(targetUrl)

.end(function (err, res) {

console.log(res);

});

4、使用cheerio解析

cheerio充當服務器端的jQuery功能,先使用它的.load()來載入HTML,再通過CSS selector來篩選元素。

代碼如下:

var $ = cheerio.load(res.text);

//通過CSS selector來篩選數據

$('#topic_list .topic_title').each(function (idx, element) {

console.log(element);

});

5、使用eventproxy來並發抓取每個主題的內容

eventproxy就是使用事件(並行)方法來解決這個問題。當所有的抓取完成後,eventproxy接收到事件消息自動幫妳調用處理函數。

代碼如下:

//第壹步:得到壹個 eventproxy 的實例

var ep = new eventproxy();

//第二步:定義監聽事件的回調函數。

//after方法為重復監聽

//params: eventname(String) 事件名,times(Number) 監聽次數, callback 回調函數

ep.after('topic_html', topicUrls.length, function(topics){

// topics 是個數組,包含了 40 次 ep.emit('topic_html', pair) 中的那 40 個 pair

//.map

topics = topics.map(function(topicPair){

//use cheerio

var topicUrl = topicPair[0];

var topicHtml = topicPair[1];

var $ = cheerio.load(topicHtml);

return ({

title: $('.topic_full_title').text().trim(),

href: topicUrl,

comment1: $('.reply_content').eq(0).text().trim()

});

});

//outcome

console.log('outcome:');

console.log(topics);

});

//第三步:確定放出事件消息的

topicUrls.forEach(function (topicUrl) {

superagent.get(topicUrl)

.end(function (err, res) {

console.log('fetch ' + topicUrl + ' successful');

ep.emit('topic_html', [topicUrl, res.text]);

});

});

6、爬取結果分析

  • 上一篇:唐現在做什麽(職業及工作內容介紹)
  • 下一篇:沒有年終獎怎麽辦啊
  • copyright 2024編程學習大全網