使用node.js製作簡易爬蟲

來源:互聯網
上載者:User

標籤: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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.