Node.js的学习中,可用于抓取其他网站的模块是【cheerio】,这个模块并不是node的内置模块,所以首先我们需要先安装一下:
安装对应模块
安装命令:
npm install cheerio
明确抓取对象
cheerio安装完毕后,我们就可以进行抓取数据了,我们先来明确一下,需要抓取的内容是一家甜点的网站,需要抓取的代码如下图:
如图所示,需要抓取的内容是图中标注出来的img的图片,没错就是下方那些卡哇伊的蛋糕,哇哇哇~好想吃,而且名字也取得好好听好好听!!!
开始抓取
好了,我们明确了抓取的内容,现在我们就开始进行抓取,在这之前,需要知晓的是,Cheerio 包括了 jQuery 核心的子集,也就是说在操作cheerio时,使用JQ的相关语法是都可以的,是不是很酷炫啊,哈哈哈,开始上代码:
var http = require("http");
var cheerio = require("cheerio");
//准备抓取的网站链接
var dataUrl = "http://www.mcake.com/shop/110/index.html#mainer_top";
http.get(dataUrl,function(res){
var str = "";
//绑定方法,获取网页数据
res.on("data",function(chunk){
str += chunk;
})
//数据获取完毕
res.on("end",function(){
//调用下方的函数,得到返回值,即是我们想要的img的src
var data = getData(str);
console.log(data);
})
})
//根据得到的数据,处理得到自己想要的
function getData(str){
//沿用JQuery风格,定义$
var $ = cheerio.load(str);
//获取的数据数组
var arr = $(".pro_box a:nth-child(1) img");
var dataTemp = [];
//遍历得到数据的src,并放入以上定义的数组中
arr.each(function(k,v){
var src = $(V).attr("src");
dataTemp.push(src);
})
//返回出去
return dataTemp;
}
得到抓取结果
得到的图片链接,打印如下图:
为了验证的信息的准确性,也为了博文页面不那么吃藕,特点击抓取到的第一个链接的可爱的甜点图附上来: