怎么使用node.js爬取知乎图片
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍了怎么使用node.js爬取知乎图片的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用node.js爬取知乎图片文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2024年11月23日怎么使用node.js爬取知乎图片
这篇文章主要介绍了怎么使用node.js爬取知乎图片的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用node.js爬取知乎图片文章都会有所收获,下面我们一起来看看吧。
原理
初入爬虫的坑,没有太多深奥的理论知识,要获取知乎上帖子中的一张图片,我把它归结为以下几步。
准备一个url
获取这个url的html内容,并分析其中的dom结构,遍历找到这些漂亮的妹纸图片url
获取图片内容
将图片内容写入本地文件
开始动手
大概知道原理之后我们就可以开干了
准备一个url
这个最简单了,去知乎随便一搜就是一大把,我们以
发一张你认为很漂亮的美女照片?
为例子,先来分析一下这个页面的dom结构,其实很简单,知乎的一个页面中会包含很多种类型的图片,有头像,用户评价上传的图片啥的。基本上在noscript种都可以找到对应的图片地址。
获取这个url的html内容,并且拿到当前页面noscript中的img链接
这一步我们需要会点简单的nodejs的知识,以及用到一个库叫cheerio,这个库具体是用来做什么的,详细请移步cheerio。
简单来说就是可以在命令行中使用jQuery来搜索遍历获取相应的元素。
那么怎样才能获取这个帖子的html呢
使用nodejs的https模块
var https = require('https')getAllHtml (url, callback) { let sHtml = '', _this = this; https.get(url, (res) => { res.on('data', (data) => { sHtml += data; }); res.on('end', () => { callback.bind(_this, sHtml)(); }) }).on('error', (err) => { console.log(err); });}
通过以上操作拿到网站的html之后,便是遍历出我们需要的图片地址来了
filterHtml (sHtml, filePath) { let $ = cheerio.load(sHtml), // 将上一步拿到的网站html传入cheerio.load,便得到类似于包装过的jQuery对象,可以像jQuey的选择器一样来选择元素 $Imgs = $('noscript img'), imgData = [], _this = this; $Imgs.each((i, e) => { let imgUrl = $(e).attr('src'); //取出对应的url imgData.push(imgUrl); // 将url传入开始下载 _this.downloadImg(imgUrl, _this.filePath, function (err) { console.log(imgUrl + 'has be down'); }); }); console.log(imgData);}
有了图片的url,如何下载到本地呢?
我们需要使用request这个库,简单的调用一下api再结合node原生写文件的api。
downloadImg (imgUrl, filePath, callback) { let fileName = this.parseFileName(imgUrl); request(imgUrl).pipe(fs.createWriteStream('./' + filePath + '/'+fileName)).on('close', callback && callback); }
关于"怎么使用node.js爬取知乎图片"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么使用node.js爬取知乎图片"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
内容
知识
页面
漂亮
元素
原理
图片内容
地址
就是
帖子
文件
篇文章
结构
网站
准备
分析
选择
深奥
一搜
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
阿里云服务器svn
安徽第三方软件开发
武装突袭3主机服务器怎么用
exchange 更换数据库
高斯数据库英文
TCGA数据库标本编号意义
网络安全重要性意义
pb 更新数据库
温室各层次网络技术选型
宝鸡银宸网络技术有限公司
公安专业网络安全与执法考题
数据库如何转换成中文
网络安全手抄报字多画少
web软件开发团队人员
销售软件开发需要什么
软件开发和游戏开发前景对比
网络技术工作者考试
百度云盘网络安全证书
数据库和数据仓库的相似点
深圳鹰创互联网科技有限公司
数据库二级映像是什么
前锋网络技术
网络安全举报会被报复么
操作系统与应用软件开发的关系
我的世界服务器删除数据库
plsql数据库怎么用
网络技术必看
工业暮色服务器
什么叫计算机和网络技术
服务器版本发布管理