NodeJs簡單七行爬蟲--爬取自己Qzone的說說並存入數據庫


沒有那么難的,嘿嘿,說起來呢其實挺簡單的,或者不能叫爬蟲,只需要將自己的數據加載到程序里再進行解析就可以了,如果說你的Qzone是向所有人開放的,那么就有一個JSONP的接口,這么說來就簡單了,也就不用我們再利用phantomjs,緩慢的爬了。其實程序還沒有做的太過完美,只是簡單地可以打印出來說說的內容,明天再做一下,把說說存到數據庫里,嘿嘿。
做這個呢,需要用到一個開源庫,nodegrass,這個庫呢也並不是必須的,它是對nodejs里的http.request的封裝。
其實基本原型就在這里了,所需要的已經在代碼里了。當然了里邊的那個鏈接是我自己的JSONP的接口,如果你懂的話,你會知道怎么改成你的JSONP接口,但是需要說的是必須空間對所有人開放。

 1 var nodegrass = require('nodegrass');
 2 var sqlite3 = require('sqlite3').verbose();
 3 var db = new sqlite3.Database('blog.db');
 4 var tmp = 0;
 5 function nodepa(tmp) {
 6     if (tmp == 10) tmp--;
 7     nodegrass.get("http://taotao.qq.com/cgi-bin/emotion_cgi_homepage_msg?owneruin=1187772742&start=" + tmp + "&num=10&format=jsonp", function(data, status, headers) {
 8         var json = JSON.parse(data.slice(10, -2));
 9         for (var s in json['result']['posts']) {
10             db.run("insert into qzone values('" + (Number(s) + tmp).toString() + "','" + json['result']['posts'][s]['content'].toString() + "','" + json['result']['posts'][s]['create_time'].toString() + "','" + json['result']['posts'][s]['createTime2'].toString() + "')", function() {
11                 if (this.changes == undefined || this.changes == null)console.log("err");
12             })
13             console.log(json['result']['posts'][s]['content']);
14             console.log(json['result']['posts'][s]['createTime2']);
15             console.log(Number(s) + tmp);
16         }
17         if (tmp < 2640) nodepa(tmp + 10);
18         else return;
19     }, 'utf-8').on('error', function(e) {
20         console.log("Got error: " + e.message);
21     });
22 }
23 nodepa(tmp);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM