js抓取网页内容( 这了,更多相关Node.js爬取图片(组图))
优采云 发布时间: 2022-04-07 20:01js抓取网页内容(
这了,更多相关Node.js爬取图片(组图))
Node.js实现爬取网站图片的示例代码
目录编写核心代码示例截图涉及知识点
开发一个小型爬虫,涉及的知识点如下:
关于cheerio
什么是cheerio?
Cheerio 是 jQuery 核心实现的特定于服务器的、快速、灵活的实现。主要用于服务端解析html。特点如下:
安装cheerio
首先在命令行下切换到程序目录,然后输入安装命令进行安装,如下:
cnpm install cheerio
安装过程如下:
准备好工作了
在编写爬虫之前,首先需要对目标内容进行分析。这次需要爬取某个网站,星空类型的图片内容。经过分析发现,所有的图片都是ul下每个li中的a标签在img里面,这次只需要解析出img的src属性就可以得到图片的下载路径。如下:
核心代码
经过以上分析,代码通过Node.js编写,分两步获取所有图片的url路径,即解析所有目标img元素的src属性。然后下载特定图像并保存。
引用所需的功能模块如下:
var https = require('https');
var cheerio = require('cheerio');
var fs = require('fs');
获取并解析html页面内容如下:
<p>//爬取的网址
var addrs=['https://www.*****.com/topic/show_27202_1.html','https://www.******.com/topic/show_27202_2.html','https://www.*****.com/topic/show_27202_3.html'];
var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'});
for(i in addrs){
(function(num){
var addr = addrs[num];
//创建目录
var p1 = new Promise(function(resolve,reject){
fs.access('./download',function(err){
if(err){
fs.mkdir('./download',function(e){
if(e){
console.log('创建失败');
}
});
}else{
resolve("success");
}
});
});
p1.then(function(datas){
var html='';
var p2 = new Promise(function(resolve,reject){
https.get(addr,function(res){
res.on('data',function(data){
html+=data.toString();
})
res.on('end',function(){
resolve("success");
});
});
});
p2.then(function(data){
//下载完成后,进行解析
const $ =cheerio.load(html);
var lis = $('#img-list-outer').find('li');
for(var j=0;j