標籤:style c class blog code java
最近看了些node.js方面的知識,就像拿它來做些什麼。因為自己喜歡攝影,經常上蜂鳥網,所以尋思了一下,乾脆做個簡單的爬蟲來扒論壇的文章。
直接上代碼吧。
1 var sys = require("sys"), 2 http = require("http"), 3 fs = require("fs"); 4 var url = "http://newbbs.fengniao.com/forum/forum_125.html"; 5 var data = ""; 6 //建立正則,過濾html 7 var reg = /<div\s*class="recommendSub">\s*<a\s*href="(.*?)"\s*class="pic"\s*title="(.*?)"/g; 8 var result = [], 9 timeStamp = 0;10 // 建立一個請求11 var req = http.request(url, function (res) {12 // 設定顯示編碼13 timeStamp = new Date().getTime();14 res.setEncoding("utf8");15 res.on(‘data‘, function (chunk) {16 data += chunk;17 });18 // 響應完畢時間出發,輸出 data19 res.on(‘end‘, function () {20 while (match = reg.exec(data)) {21 result.push({22 title: match[1],23 url: match[2]24 });25 }26 writeFile(result);27 });28 });29 // 發送請求30 req.end();31 function writeFile(r) {32 var str = ‘‘;33 for (var i = 0, _len = r.length; i < _len; i++) {34 str += r[i].title + ‘\n‘ + r[i].url + ‘\n‘;35 }36 //資料拼接結束後,寫入s.txt檔案37 fs.writeFile(‘s.txt‘, str, function (err) {38 if (err) {39 throw err;40 }41 console.log(‘耗時約‘ + Math.ceil((new Date().getTime() - timeStamp) / 1000) + ‘s‘);42 console.log(‘資料已寫入檔案‘);43 });44 }
這裡比較需要注意的就是正則了,大家要注意貪婪匹配這些要點。
我們把這個js檔案命名為spider.js,控制台下運行
node spider.js
後就可以看到s.txt檔案產生了,裡面就是擷取的文章資訊。
就這樣吧,打算抽空好好學學node.js,這傢伙還是挺有趣的。
相關的js我同時也上傳到了github上,有感興趣的同學可以clone到本地。
地址:https://github.com/kbqncf/spider