资讯专栏INFORMATION COLUMN

使用 node 抓取网页图片

genedna / 698人阅读

摘要:使用抓取网页图片的使用非常广泛,可以做通信,做爬虫,甚至可以做桌面应用程序。今天就利用闲暇时间写个小小的分享利用爬取百度图片首页的图片。

使用 node 抓取网页图片

node 的使用非常广泛,可以做通信,做爬虫,甚至可以做桌面应用程序。

今天就利用闲暇时间写个小小的分享:利用 node 爬取百度图片首页的图片。

对,就是中间那几张:

首先新建一个文件夹,名字随便取,只要不是中文就行,然后在命令行中初始化一下:

</>复制代码

  1. npm init -y

新建一个名为 app.js 的文件

在这个文件里,我们需要引入一些模块:

</>复制代码

  1. var http=require("http");
  2. var https=require("https")
  3. var fs=require("fs");
  4. var cheerio=require("cheerio");

cheerio 模块是第三方模块,需要进行安装:

</>复制代码

  1. npm install cheerio --save

接下来,需要解析百度图片的首页:

</>复制代码

  1. var wz="http://images.baidu.com/";
  2. var strHtml="";
  3. http.get(wz,(res)=>{
  4. res.on("data",(chunk)=>{
  5. strHtml+=chunk;
  6. });
  7. console.log(strHtml)
  8. })

在命令行输入 node app.js 运行,会在命令行看到网页的源代码。这样网页就解析完了。

接下来我们需要获取首页中间的十张图片。

要获取图片,就必须知道图片的 url 地址,在这个网页上,图片的url地址在 img_single_box 下的 img 标签里。

我们之前引用了一个名为 cheerio 的第三方模块,这个库是一个 jQuery 的模块,可以在服务端写 jQuery

在上面的代码示例中,我们已经获取到了网页源代码,接下来就要找到我们需要的 url 地址了:

</>复制代码

  1. http.get(wz,(res)=>{
  2. res.on("data",(chunk)=>{
  3. ···
  4. });
  5. res.on("end",()=>{
  6. var $=cheerio.load(strHtml);
  7. //建立一个空数组,用来放我们取得的url地址
  8. var imgdata=[];
  9. $(".img_single_box img").each((index,item)=>{
  10. imgdata.push($(item).attr("src"))
  11. });
  12. console.log(imgdata)
  13. })
  14. })

运行我们写的文件,你将会看到我们需要的url地址已经存进去了。

现在就利用这几个url地址来保存图片了

</>复制代码

  1. http.get(wz,(res)=>{
  2. res.on("data",(chunk)=>{
  3. ···
  4. });
  5. res.on("end",()=>{
  6. ···
  7. function saveImage(imgdata){
  8. https.get(imgdata,(res)=>{
  9. res.setEncoding("binary");//二进制文件
  10. var data="";
  11. res.on("data",(a)=>{
  12. data+=a;
  13. }).on("end",()=>{
  14. if(!fs.existsSync("./images")){
  15. fs.mkdirSync("./images");
  16. };
  17. fs.writeFile("images/"+Math.random()+".png",data,"binary",(err)=>{
  18. if(!err)
  19. console.log("成功")
  20. })
  21. })
  22. });
  23. }
  24. for(var i=0;i
  25. 到这里就写完了,在命令行 node app.js ,是不是在 images 文件夹下有了10张图片呢?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89061.html

相关文章

  • Python抓取百度百科数据

    摘要:前言本文整理自慕课网开发简单爬虫,将会记录爬取百度百科词条相关页面的整个过程。本实例抓取百度百科词条页面以及相关词条页面的标题和简介。分析目标格式进入百度百科词条页面,页面中相关词条的链接比较统一,大都是。 前言 本文整理自慕课网《Python开发简单爬虫》,将会记录爬取百度百科python词条相关页面的整个过程。 抓取策略 showImg(https://segmentfault.c...

    loostudy 评论0 收藏0
  • node批量抓取并下载小姐姐照片

    摘要:背景本人于周六早上惊醒于翠花的电话轰炸中一大早竟然问这么伤脑筋愚蠢的问题本想赶紧打发了继续我的回笼觉没想到乐于助人的我当然要帮帮助他了看到这里的红色感叹号不禁眉头一皱打开网站不出我所料姹紫嫣红的图片差点闪瞎我的钛合金狗眼几番浏览欣赏后收工大 背景 本人于周六早上惊醒于翠花的电话轰炸中... showImg(https://segmentfault.com/img/remote/1460...

    cloud 评论0 收藏0
  • 分分钟教你用node.js写个爬虫

    摘要:爬虫介绍二爬虫的分类通用网络爬虫全网爬虫爬行对象从一些种子扩充到整个,主要为门户站点搜索引擎和大型服务提供商采集数据。 分分钟教你用node.js写个爬虫 写在前面 十分感谢大家的点赞和关注。其实,这是我第一次在segmentfault上写文章。因为我也是前段时间偶然之间才开始了解和学习爬虫,而且学习node的时间也不是很长。虽然用node做过一些后端的项目,但其实在node和爬虫方面...

    fanux 评论0 收藏0
  • Puppeteer 初探

    摘要:获取获取上下文句柄执行计算销毁句柄除此之外,还可以使用意为在浏览器环境执行脚本,可传入第二个参数作为句柄,而则针对选中的一个元素执行操作。 我们日常使用浏览器或者说是有头浏览器时的步骤为:启动浏览器、打开一个网页、进行交互。 无头浏览器指的是我们使用脚本来执行以上过程的浏览器,能模拟真实的浏览器使用场景。 有了无头浏览器,我们就能做包括但不限于以下事情: 对网页进行截图保存为图片或 ...

    appetizerio 评论0 收藏0
  • Node.js爬取科技新闻网站cnBeta(附前端及服务端源码)

    摘要:前言一直很喜欢看科技新闻,多年来一直混迹于,以前西贝的评论区是匿名的,所以评论区非常活跃,各种喷子和段子,不过也确实很欢乐,可以说那是西贝人气最旺的时候。 前言 一直很喜欢看科技新闻,多年来一直混迹于cnBeta,以前西贝的评论区是匿名的,所以评论区非常活跃,各种喷子和段子,不过也确实很欢乐,可以说那是西贝人气最旺的时候。然而自从去年网信办出台了《互联网跟帖评论服务管理规定》,要求只有...

    李涛 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<