• 需求

爬取守望先锋官网主页面的英雄图片和英雄图标

通过观察页面源代码, 发现主页面的英雄信息不能直接通过源代码获取到, 而是以json的格式保存保存的, 通过访问该文件的链接, 来对主页面进行渲染, 所以可以通过访问该json数据的链接来获得图片的下载链接, 然后进行下载

  • 源代码如下:
// 第三方模块 请求网页数据
const axios = require('axios')
// 核心模块 操作文件流
const fs = require('fs')
// 核心模块 操作文件路径
const path = require('path')
// 爬取地址
const httpUrl = 'https://overwatch.nosdn.127.net/1/data/homeHeroes-20200416.json?callback=heroesJson&_=1605525107098'
// 全局变量 用于查看爬取图片个数
let index = 0/*** 下载图片异步函数* @param {*} imgType 图片类型 icon/img * @param {*} hero 英雄对象 包括名称 链接*/
async function downloadImg(imgType, hero) {// 获取 图片名称 let name = hero.name// 根据图片类型 获取下载链接let url = imgType === 'icon' ? hero.iconUrl : hero.imgUrl// 获取图片后缀名let extName = path.parse(url, true).ext// 通过正则将图片名称中的中文引号删除掉if(name.includes('”')) {name = name.replace(/[“”]/g, ele => '')}// 创建输出流let ws = fs.createWriteStream(`./image/${imgType}/${name+extName}`)// 创建输入流let res = await axios.get(url, {responseType: 'stream'})// 将输入流连接到输出流res.data.pipe(ws)// 输入流关闭时 关闭输出流res.data.on('close', () => {ws.close()})// 提示图片已下载完成console.log(`${++index}\.${imgType}类型 ${name+extName}  下载完成...\n`)}/*** 立即执行异步函数(主函数)*/
;(async (httpUrl)=> {// 获取网页数据let response = await axios.get(httpUrl)// 获取网页源码let info = response.data// 通过正则解析源码获得对象let result = /heroesJson\((.*?)\)/igs.exec(info)// 将json 字符串转换为 obj对象let heroes = JSON.parse(result[1]).heroes// 循环每个英雄数据for(let i = 0; i < heroes.length; i++) {// 分别为对象设置两种下载链接的属性 heroes[i].imgUrl = heroes[i].overlayheroes[i].iconUrl = heroes[i].icon// 下载icon文件await downloadImg('icon', heroes[i])// 下载img文件await downloadImg('img', heroes[i])}// 提示已下载完console.log('已全部下载完毕!!!')})(httpUrl)
  • 文件的目录结构

  • 爬取结果

node爬取守望先锋图片相关推荐

  1. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

  2. Node爬取简书首页文章

    Node爬取简书首页文章 博主刚学node,打算写个爬虫练练手,这次的爬虫目标是简书的首页文章 流程分析 使用superagent发送http请求到服务端,获取HTML文本 用cheerio解析获得的 ...

  3. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片

    本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...

  4. 使用Python爬虫爬取网络美女图片

    代码地址如下: http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip instal ...

  5. python爬取贴吧图片_Python爬取贴吧多页图片

    Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...

  6. 爬取街拍图片_如何拍摄好街拍照片

    爬取街拍图片 Street photography is about documenting the day to day life of a city. It's about capturing t ...

  7. lofter 爬虫_Python网络爬虫1 - 爬取网易LOFTER图片

    LOFTER是网易出品的优质轻博客,灵感源于国外的tumblr,但比之更加文艺,更加本地化.本人非常喜欢LOFTER的UI设计,以及其中的优质用户和内容,似乎网易并不擅长推广,所以受众并不广泛.这都是 ...

  8. Python爬取自然风景图片代码

    Python爬取自然风景图片代码 \qquad 需要用到python的etree库和requests库,需要提前下载安装. from lxml import etree import requests ...

  9. 用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)

    参考文章:https://www.cnblogs.com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只 ...

  10. python爬取网站的图片

    python爬取网站的图片 本次爬取图片所需要用到的库:Requests库,BeautifulSoup库,正则表达式,os库. 思路:先爬一张图片,再爬一个网站的图片 先爬一张图片: 首先要得到这张图 ...

最新文章

  1. mysql字段定义成text类型的严重影响查询性能
  2. sscanf()的用法和例子
  3. java 泛型 extends 多个
  4. 商战特训营 竞合赛场显英才
  5. 程序员面试金典 - 面试题 03.05. 栈排序(两栈)
  6. 自顶向下 计算机网络知识,计算机网络(自顶向下)第七版考试复习要点(第四章)...
  7. android录音相关
  8. Linux常用的基础组件
  9. c#和javascript分别轻松实现计算24点
  10. 1114 Family Property (25 分)
  11. 测试用例设计之正交试验
  12. Depsolving loop limit reached
  13. Web答辩问题整合一
  14. 小程序 · 手机号码中间四位隐藏
  15. 银行各个岗位及薪酬排名出炉(供参考)
  16. 实现rsyslog外发
  17. redmine2.0 + mongrel
  18. 关于在vs2012中提示.NET 4.5未在web服务器上注册的解决方案
  19. 数商云:如何采用电子招投标为企业提升招投标流程的连贯性
  20. k8s pod控制器使用以及详解

热门文章

  1. 伍斯特理工学院计算机科学硕士,美国伍斯特理工学院数据科学硕士录取
  2. centos ipv6 网卡_centOS添加ipv6支持(仅限已分配ipv6地址和网关)
  3. IPv6 寻址方式简介
  4. ios越狱改设备id_为什么要越狱iOS设备
  5. 常见设计模式之(五):观察者模式
  6. 大一python实验二答案_python实验二
  7. win10分辨率设置_win10分辨率设置方法教程
  8. 为啥一到秋季就鼻塞、流鼻涕、打喷嚏?该如何是好?别总当成感冒
  9. 百度AI市场MYNT EYE小觅双目摄像机开箱试用全记录
  10. 微信扫描打开APP下载链接提示代码案例源码