js抓取网页内容(没错.js的学习中,可用于抓取其他网站的模块 )
优采云 发布时间: 2021-09-29 01:31js抓取网页内容(没错.js的学习中,可用于抓取其他网站的模块
)
在node.js的学习中,可以用来捕获其他网站的模块是[cherio]。此模块不是node的内置模块,需要先安装:
安装相应的模块
安装命令:
npm install cheerio
显式抓取对象
安装cherio后,我们可以获取数据。让我们明确一下,要捕获的内容是网站,要捕获的代码如下:
如图所示,要捕获的内容是图中标记的IMG图片。是的,它是下面的Kawaii蛋糕。哇,哇,哇~我想吃东西,而且名字也很好
开始抓取
我们已经定义了捕获的内容。现在让我们开始捕捉。在此之前,我们需要知道cherio收录jQuery核心的一个子集,也就是说,在操作cherio时,可以使用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;
}
获取抓取结果
获得的图片链接打印如下:
为了验证信息的准确性,也为了使博客页面更少使用lotus root,该功能单击以抓取所附第一个链接的可爱甜点图片: