本文介绍了在Node.js中抓取HTML页面内容的两种核心方法。第一种利用原生http模块结合iconv-lite处理GBK编码数据;第二种通过Promise封装http.get请求,实现异步获取网页源码并返回HTML字符串,适用于百度等常见网站的内容抓取场景。
Node.js抓取HTML页面内容的两种实现方式
以下直接展示Node.js抓取HTML页面内容的核心实现代码。
具体代码实现如下:
var http = require("http");
var iconv = require('iconv-lite');
var option = {
hostname: "stockdata.stock.hexun.com",
path: "/gszl/s601398.shtml"
};
var req = http.request(option, function(res) {
res.on("data", function(chunk) {
console.log(iconv.decode(chunk, "gbk"));
});
}).on("error", function(e) {
console.log(e.message);
});
req.end();
接下来介绍另一种Node.js抓取网页内容的方法。
function loadPage(url) {
var http = require('http');
var pm = new Promise(function (resolve, reject) {
http.get(url, function (res) {
var html = '';
res.on('data', function (d) {
html += d.toString()
});
res.on('end', function () {
resolve(html);
});
}).on('error', function (e) {
reject(e)
});
});
return pm;
}
loadPage('http://www.baidu.com').then(function (d) {
console.log(d);
});