node爬虫_爬取斗图啦网站上的表情包

news/2024/5/20 15:47:58/文章来源:https://blog.csdn.net/weixin_45915891/article/details/108510830

最近在学习node.js,做点不是人的事情:爬取网站上的表情包

实现步骤:
1、分析网站的结构:

斗图啦这个网站是服务器渲染的,直接打开网站就可以获取到完整的html信息。
我们可以看到下面两张图就是我们需要获取的信息
在这里插入图片描述
在这里插入图片描述
2、使用的插件工具
(1)axios ====> 异步获取ajax请求
(2)cheerio ====> cheerio是jquery核心功能的一个快速灵活而又简洁的实现,主要是为了用在服务器端需要对DOM进行操作的地方(简单点说就是方便操作获取回来的html数据)

3、网站数据分析
(1)第一步需要爬取的数据
在这里插入图片描述
(2)第二步要爬取的数据
在这里插入图片描述

4、代码实现:

// 安装好我们需要的插件工具 可以换成cnpm淘宝镜像
npm install axios --save
npm install cheerio --save
// index.jslet axios = require('axios');
let cheerio = require('cheerio')
const fs = require('fs')
const path = require('path')// 需要爬取的网站地址:斗图啦
let httpUrl = 'https://www.doutula.com/article/list/?page=1'axios.get(httpUrl).then(function(res) {// 获取回来后,res.data就是网站的html格式数据// 初始化$let $ = cheerio.load(res.data)// 整理第一步需要爬取的数据$('#home .col-sm-9>a').each((i,el) => {// 获取a标签里面的url,等待下一步进入详情页面爬取第二步数据let pageUrl = $(el).attr('herf)// 获取a标签里面的title,方便创建目录let title = $(el).find('.random_title').text()// .random_title里面有一个div的标签,需要去掉才能获取到真实的名字// 利用reg正则表达式execlet reg = /(.*?)\d/igstitle = reg.exec(title)[1]//根据title 创建文件目录 fs.mkdir('./img/' + title, function(err) {if(err){} else {console.log('成功创建目录:','./img/' + title)}})// 爬取第二步数据,下载图片parsePage(pageUrl,title)})
}).catch(function (err) {console.log(err)
})// 爬取第二步数据,下载图片 函数
async function parsePage(url,title) {// 异步获取 传进来的url地址中的数据let res = await axios.get(url)// cheerio 初始化 res.data数据let $ = cheerio.load(res.data)$('.pic-content img').each((i,el) => {// 获取表情包url地址let imgUrl = $(el).attr('src)//解析图片扩展名extName = path.extname(imgUrl)// 图片写入的路径和名字let imgPath = `./img/${title}/${title}-${i}${extName}`// 创建写入流let ws = fs.createWriteStream(imgPath)// 下载表情包图片axios.get(imgUrl, { responseType: 'stream' }).then(function(res) {// 获取到的图片二进制信息写入本地文件中res.data.pipe(ws)// 写入完成后关闭写入流res.data.on('close', function () {ws.close()})})})
}

最后附上gitee的源码 https://gitee.com/Vansooo/reptiles-get-emoticon-pack/tree/master

小小的作品,希望对大家有帮助,也希望各位大佬可以指点指点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_858936.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

良心安利卧室su模型素材网站

前方干货满满,建议先收藏再看哦!为大家整理卧室su模型素材,总有满足你需求的一款,除此之外,免费,资源质量好,一键打包下载,你还不心动吗? 因为小编的工作原因&#xff0…

必备 免费人物虚幻模型素材网站

前方干货满满,建议先收藏再看哦!为大家整理人物虚幻模型素材,总有满足你需求的一款,除此之外,免费,资源质量好,一键打包下载,你还不心动吗? 本人曾经也是废大把时间寻找…

超全机械设备 机器3dm犀牛资源素材网站整理

想必大家都在为找机械设备 机器3dm犀牛资源而头疼吧,今天小编都为大家整理好咯,上资源的机械设备 机器3dm犀牛资源,大家喜欢的可以先行收藏哈,之后会持续更新哒~ 接下来就给大家介绍一下我珍藏已久的网站:爱给网&…

良心安利办公室样机模板素材网站

因为工作的原因,我会经常使用到素材网站,各个平台的模式不太一样,内容也各有特点。刚开始接触素材网站都是一头雾水,走了很多弯路,一些很简单的操作都花去很长的操作时间.....今天给大家安利办公室样机模板素材网站&am…

超全公园sketchup模型素材网站整理

想必大家都在为找公园sketchup模型而头疼吧,今天小编都为大家整理好咯,超多的公园sketchup模型资源,大家喜欢的可以先行收藏哈,之后会持续更新哒~ 接下来就给大家介绍一下我珍藏已久的网站: 爱给网,我的工…

宝藏又小众的飞机cc0高清摄影图片素材网站分享

天天各大网站找飞机cc0高清摄影图片素材?最后空手而归?今天为大家推荐飞机cc0高清摄影图片素材网站,质量上乘适合资源慌缺的你,话不多说准备开始收藏吧! 因为小编的工作原因,经常会使用到飞机cc0高清摄影图…

超全伏特加免抠摄影素材网站整理

因为工作的原因,我会经常使用到素材网站,各个平台的模式不太一样,内容也各有特点。刚开始接触素材网站都是一头雾水,走了很多弯路,一些很简单的操作都花去很长的操作时间.....今天给大家安利伏特加免抠摄影素材网站&am…

实验·搭建nginx网站

实验搭建nginx网站 实验环境 CentOS 7.6 nginx源码包 nginx-1.12.2.tar 实验步骤>开启nginx统计模块并可以正常访问 #创建用户nginx [rootlocalhost opt]# useradd -M -s /sbin/nologin nginx#安装环境 [rootlocalhost opt]# yum -y install gcc gcc-c pcre pcre-dev…

世界各国语言学习网站

世界各国语言学习网站 来自 佳人 卿本佳人发表 收录于昨天 59 分享 转自: 鲜果网 世界各国语言学习资源,没有找不到的,只有想不到的,保证你一辈子也学不完…… 篇幅比较长,是按地域分的,这里先列个地域清…

美国科技博客网站gadgetcrave.com近日评出世界现代史上10大最为重要的技术和产品

美国科技博客网站gadgetcrave.com近日评出世界现代史上10大最为重要的技术和产品,其中电灯、电话、电视、电脑和互联网等技术和产品上榜。gadgetcrave.com网站称,这次评选去掉了那些对于公众而言直观性较低(如晶体管、电力和内燃机等)的技术和产品&#…

JavaScript系列—性能优化之《网站性能优化实战——从12.67s到1.06s的故事》

本篇博文来源于网络 226 人赞同了该文章 原文作者:IMWeb jerryOnlyZRJ 原文链接: 网站性能优化实战--从12.67s到1.06s的故事 - 腾讯Web前端 IMWeb 团队社区 史上最全面、最完整的网站性能监测与优化策略 0.引言 作为互联网项目,最重要的便…

编译ASP.NET网站项目,以及部署网站到本地localhost服务器上实现独立运行

1.准备步骤 操作系统:windows 10 IDE:visual studio 2017 我们创建了一个网站项目后,“解决方案资源管理器”中能看到我们编写好的项目文件 准备好源文件后就可以开始编译工作。 2.发布Web应用,进行编译 右键项目名称,…

Apache+mono实现ASP.NET网站在ubuntu服务器上运行

要求:提前安装好Apache2 安装mono mono是一个用来在linux环境下运行.NET的应用 mono官网安装方法 安装库到ubuntu 16.04上(其余版本参考上方官方说明): sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-…

如何让外网访问自己写的网站

由内网映射到外网 准备材料实现步骤 准备材料 写好的工程应用 ;natapp,获取注册点这里:Here; 实现步骤 注册并实名认证;购买隧道,免费隧道;见图: 复制authtoken;让本…

Python实战项目之模拟浏览器访问京东网站并输入关键字自动搜索

Python实战项目之模拟浏览器访问京东网站并输入关键字自动搜索 1、下载安装PyCharm 下载网址:http://www.jetbrains.com/pycharm/ 2、下载chromedriver 下载网址:http://chromedriver.storage.googleapis.com/index.html 3、在PyCharm环境安装selenium库…

搭建网站的六个基本步骤流程(教程解说)

现今越来越多的企业开始涉足线上经营,因此,企业网站已经成为一个企业的标配,越来越多的企业和个人开始关注网站建设。上篇文章,小编讲了一些建站前的准备,现在我们就来讲讲建站的具体流程。 一、 购买注册域名 域名是…

基于腾讯云服务器安装宝塔面板搭建Typecho博客网站(图文教程)

欢迎您来拜访!大家好这是我自己总结的完整版的腾讯云服务器搭建网站;现如今服务器的最大用途就是搭建网站,许多人认为搭建网站很难,因为它包含了一些专业的东西,和一些细节上的东西需要注意,因此我把自己学…

阿里云服务器搭建网站完整教程(宝塔面板+wordpress)

​ 下面稍微介绍一下如何使用阿里云服务器安装宝塔面板。 一、准备 阿里云的云服务器,即 阿里云ECS,默认的用户名 root,密码的话可以修改。 远程连接云服务器使用 ssh 软件工具,使用的是公网ip。 注意事项:出于性能…

新手建站详细步骤(图文教程)

现今越来越多的企业开始涉足线上经营,因此,企业网站已经成为一个企业的标配,越来越多的企业和个人开始关注网站建设。上篇文章,小编讲了一些建站前的准备,现在我们就来讲讲建站的具体流程。 一、 购买注册域名 域名是…

如何使用宝塔面板一键快速安装wordpress网站?(图文教程)

宝塔面板添加WordPress站点 一、建站准备条件 条件1:阿里云服务器一台。原则上有台服务器就好了,不过我一般喜欢用大品牌,稳定和安全。条件2: 阿里云域名一个。在哪家买的服务器,就用哪家的域名,反之&…