建立一個爬蟲的功能最直接的就是讀取網址,在NodeJS就可以直接使用
request
var request = require("request");
var url = "https://raw.github.com/mikeal/request/master/package.json";
var options = {
method: 'GET'
,json: true
,uri: url
};
request(options, function (err, res, body) {
if (err) throw err;
console.log(body);
});
這樣一段就可以取得URL的資料
但有些時候,是需要完成回應之後才有辦法進行後續的動作
這時候寫法就要有所不同,這裡就用到另一個套件「 promise 」
寫法會是
var Promise = require("promise");
var request = require("request");
var url = "https://raw.github.com/mikeal/request/master/package.json";
requestp(url, true).then(function (data) {
console.log("%s@%s: %s", data.name, data.version, data.description);
}, function (err) {
console.error("%s; %s", err.message, url);
console.log("%j", err.res.statusCode);
});
function requestp(url, json) {
json = json || false;
return new Promise(function (resolve, reject) {
request({url:url, json:json}, function (err, res, body) {
if (err) {
return reject(err);
} else if (res.statusCode !== 200) {
err = new Error("Unexpected status code: " + res.statusCode);
err.res = res;
return reject(err);
}
resolve(body);
});
});
}
這樣的寫法就是會完成回應後,才做後續的動作。
參考資料:
Scraping web pages using Node.js using request+promise