怎么使用node.js爬取知乎图片
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,这篇文章主要介绍了怎么使用node.js爬取知乎图片的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用node.js爬取知乎图片文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2025年01月27日怎么使用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安全错误
数据库的锁怎样保障安全
护苗网络安全教育中山
全国网络安全法律法规试题
2020年新型网络安全公司
网络安全工作领导小组
为了建立与数据库的连接
鄂尔多斯市云计算网络安全培训
公司对网络服务器的设计
宁波软件开发岗位
深圳公司内部网络安全技术
网络安全不涉及范围是()
顶级域名的根服务器
asp上传服务器文件夹权限
pc做服务器
轻量级数据库管理器oracle
信息技术活动课网络安全教学设计
网络安全手抄报背景颜色
数据库怎么做成日报表
软件开发 软件 硬件
ctf网络安全竞赛策划
网络安全与保密有什么区别
网络安全法五大亮点 ppt
数据库过滤操作
崇明区营销软件开发价钱
网络安全发展的问题
海曙敏捷软件开发系统
好用的网络代理服务器
用友T 服务器没启用
企业内部的网络安全薄弱面
玩游戏的服务器cpu如何选择
软件开发流程的过程有哪些