node爬取守望先锋图片
- 需求
爬取守望先锋官网主页面的英雄图片和英雄图标
通过观察页面源代码, 发现主页面的英雄信息不能直接通过源代码获取到, 而是以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爬取守望先锋图片相关推荐
- python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片
Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...
- Node爬取简书首页文章
Node爬取简书首页文章 博主刚学node,打算写个爬虫练练手,这次的爬虫目标是简书的首页文章 流程分析 使用superagent发送http请求到服务端,获取HTML文本 用cheerio解析获得的 ...
- python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片
本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...
- 使用Python爬虫爬取网络美女图片
代码地址如下: http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip instal ...
- python爬取贴吧图片_Python爬取贴吧多页图片
Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...
- 爬取街拍图片_如何拍摄好街拍照片
爬取街拍图片 Street photography is about documenting the day to day life of a city. It's about capturing t ...
- lofter 爬虫_Python网络爬虫1 - 爬取网易LOFTER图片
LOFTER是网易出品的优质轻博客,灵感源于国外的tumblr,但比之更加文艺,更加本地化.本人非常喜欢LOFTER的UI设计,以及其中的优质用户和内容,似乎网易并不擅长推广,所以受众并不广泛.这都是 ...
- Python爬取自然风景图片代码
Python爬取自然风景图片代码 \qquad 需要用到python的etree库和requests库,需要提前下载安装. from lxml import etree import requests ...
- 用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)
参考文章:https://www.cnblogs.com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只 ...
- python爬取网站的图片
python爬取网站的图片 本次爬取图片所需要用到的库:Requests库,BeautifulSoup库,正则表达式,os库. 思路:先爬一张图片,再爬一个网站的图片 先爬一张图片: 首先要得到这张图 ...
最新文章
- mysql字段定义成text类型的严重影响查询性能
- sscanf()的用法和例子
- java 泛型 extends 多个
- 商战特训营 竞合赛场显英才
- 程序员面试金典 - 面试题 03.05. 栈排序(两栈)
- 自顶向下 计算机网络知识,计算机网络(自顶向下)第七版考试复习要点(第四章)...
- android录音相关
- Linux常用的基础组件
- c#和javascript分别轻松实现计算24点
- 1114 Family Property (25 分)
- 测试用例设计之正交试验
- Depsolving loop limit reached
- Web答辩问题整合一
- 小程序 · 手机号码中间四位隐藏
- 银行各个岗位及薪酬排名出炉(供参考)
- 实现rsyslog外发
- redmine2.0 + mongrel
- 关于在vs2012中提示.NET 4.5未在web服务器上注册的解决方案
- 数商云:如何采用电子招投标为企业提升招投标流程的连贯性
- k8s pod控制器使用以及详解