使用node爬区一个网站当中所有的图片的链接,不用下载,该怎么样写代码
1条回答 默认 最新
- 音药 2022-08-29 08:39关注
给你一个案例
const http = require("http"); const fs = require('fs'); const cheerio = require('cheerio'); const request = require('request'); let iconv = require("iconv-lite"); let index = 13; // const url = 'http://www.netbian.com' const url = 'http://www.netbian.com/index_13.htm' const getData = (url) => { http.get(url, (res) => { let buffer = []; let bufferLength = 0; res.on("data", chunk => { buffer.push(chunk); bufferLength += chunk.length; }); res.on("end", () => { // 现在将所有buffer组合为一个整体buffer let bufferData = Buffer.concat(buffer, bufferLength); // 使用 iconv 以 GBK 编码转换为字符串。 var html = iconv.decode(bufferData, "GBK"); // console.log(html); // 现在得到的页面内容就没有乱码的了。 var $ = cheerio.load(html); $('.list img').each((i, el) => { const text = $(el).attr('alt').replace(/\s*/g,"") const img_url = $(el).attr('src') console.log(text,'=====', index + '_' + (i+1)) console.log(img_url) request.head(img_url, function(error, res,body){ if(error){ console.log('失败了') } }); //通过管道的方式用fs模块将图片写到本地的images文件下 request(img_url).pipe(fs.createWriteStream('./images/' + index + '_' + (i+1) + '.jpg')); }) if (index > 1228) return; index++; getData(`http://www.netbian.com/index_${index}.htm`); }); }); } fs.stat('images', (error,stats) => { if (error) { fs.mkdir("images", (err) => { if (err) console.log('err', err) console.log('创建目录成功'); }); } }) getData(url) ```javascript
```
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 win10权限管理,限制普通用户使用删除功能
- ¥15 minnio内存占用过大,内存没被回收(Windows环境)
- ¥65 抖音咸鱼付款链接转码支付宝
- ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
- ¥15 求螺旋焊缝的图像处理
- ¥15 blast算法(相关搜索:数据库)
- ¥15 请问有人会紧聚焦相关的matlab知识嘛?
- ¥15 网络通信安全解决方案
- ¥50 yalmip+Gurobi
- ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面