Node.js如何编写示例代码进行基础的网页抓取?

更新于
2026-10-03 06:05:42
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计481个文字,预计阅读时间需要2分钟。

学习Node.js也有几天时间了,所以写写练练手;作为一名后端选手,写起来还挺有熟悉感的。emmm~ ~+ 货不多讲,开搞...... + 首先是依赖选择:+ 代码块如下:

学习也有几天时间了,所以打算写着练练手;索然我作为一个后端的选手,写起来还有那么一丝熟悉的感觉。emmm~~ ‘货'不多讲 ,开搞........

首先是依赖选择:

代码块如下:

//引入依赖 //unsplash.com/';

初步实现:

网站的基本构成

这里主要是我们直接确认一下需要的标签,以及外面的,然后直接就可以开工了....

核心代码:

//方法对象 const util = { getsrc: function (url) { https.get(url, res => { const chunks = []; res.on('data', chunk => { // chunks里面存储着网页的html内容 chunks.push(chunk); }); res.on('end', e => { let ALL = []; //编码格式 let html = iconv.decode(Buffer.concat(chunks), 'utf8'); let $ = cheerio.load(html, { decodeEntities: false }); //标签遍历 $("figure img").each(function (idex, elent) { let $elent = $(elent); let $srcset = $elent.attr("srcset"); if ($srcset != undefined) { let src = ($srcset.split(',').pop()).split('?')[0]; ALL.push({ src: src }) } }); //遍历数组 每个后面加.jpg ALL.forEach(item => { util.downloadimg(item.src, path.basename(item.src) + ".jpg", function () { console.log(path.basename(item.src) + ".jpg"); }); }) }); res.on('error', e => { console.log('Error: ' + e.message); }); }); }, //运行主函数 main: function () { console.log("------start--------"); util.getsrc(url); }, //下载图片函数 downloadimg: function (src, srcname, callback) { //http请求 request.head(src, function (err, res, body) { if (err) { console.log('err:' + err); return false; } console.log('res: ' + res); //保存数据,这里是防止未来得及记录数据又开始读取数据而导致数据丢失 request(src).pipe(fs.createWriteStream('./img/' + srcname)).on('close', callback); }); } } //主函数 util.main();

然后就可以运行 node xxx.js 看运行结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计481个文字,预计阅读时间需要2分钟。

学习Node.js也有几天时间了,所以写写练练手;作为一名后端选手,写起来还挺有熟悉感的。emmm~ ~+ 货不多讲,开搞...... + 首先是依赖选择:+ 代码块如下:

学习也有几天时间了,所以打算写着练练手;索然我作为一个后端的选手,写起来还有那么一丝熟悉的感觉。emmm~~ ‘货'不多讲 ,开搞........

首先是依赖选择:

代码块如下:

//引入依赖 //unsplash.com/';

初步实现:

网站的基本构成

这里主要是我们直接确认一下需要的标签,以及外面的,然后直接就可以开工了....

核心代码:

//方法对象 const util = { getsrc: function (url) { https.get(url, res => { const chunks = []; res.on('data', chunk => { // chunks里面存储着网页的html内容 chunks.push(chunk); }); res.on('end', e => { let ALL = []; //编码格式 let html = iconv.decode(Buffer.concat(chunks), 'utf8'); let $ = cheerio.load(html, { decodeEntities: false }); //标签遍历 $("figure img").each(function (idex, elent) { let $elent = $(elent); let $srcset = $elent.attr("srcset"); if ($srcset != undefined) { let src = ($srcset.split(',').pop()).split('?')[0]; ALL.push({ src: src }) } }); //遍历数组 每个后面加.jpg ALL.forEach(item => { util.downloadimg(item.src, path.basename(item.src) + ".jpg", function () { console.log(path.basename(item.src) + ".jpg"); }); }) }); res.on('error', e => { console.log('Error: ' + e.message); }); }); }, //运行主函数 main: function () { console.log("------start--------"); util.getsrc(url); }, //下载图片函数 downloadimg: function (src, srcname, callback) { //http请求 request.head(src, function (err, res, body) { if (err) { console.log('err:' + err); return false; } console.log('res: ' + res); //保存数据,这里是防止未来得及记录数据又开始读取数据而导致数据丢失 request(src).pipe(fs.createWriteStream('./img/' + srcname)).on('close', callback); }); } } //主函数 util.main();

然后就可以运行 node xxx.js 看运行结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。