NodeJs爬取网站图片

NodeJS爬取网站主要针对于静态页面(右键鼠标源码可以看到资源内容的)。同时需要用到httphttpsfscheerio模块。当然cheerio需要安装后引入。

当然,关于cheerio 更多的内容,你可以看npmjs官方文档

// 安装cheerio
npm install cheerio

我们需要创建一个server.js文件。本次我们爬取豆瓣电影网站中上海正在热映的电影海报。

const http = require("http")
const https = require("https")
const fs = require("fs")
const cheerio = require("cheerio")

// 爬取网站地址 豆瓣电影上海正在热映的电影海报
const urlString = "https://movie.douban.com/cinema/nowplaying/%E4%B8%8A%E6%B5%B7/" 

// 创建服务
const server = http.createServer((res,req) => {
    let data = ''
    https.get(urlString,(result) => {
      result.on('data',(chunk) => {
        data += chunk
      })
      result.on('end',() => {
        fs.writeFileSync('./new.html', data); // 你的根目录下就会有一个new的静态网页代码(便于查看,没有都可以)
        console.log('传输完成');
        filterData(data) //调用过滤文件方法
      })
   })
})

// 用cheerio过滤数据
function filterData(data) {
    const $ = cheerio.load(data);
    let imgArr = [] //用于存取过滤后的数据容器
    $('.lists>li').each((index,el) => {
      imgArr.push($(el).find(".poster img").attr("src"))
    })
    console.log(imgArr)
    imgArr.forEach((item,index) => {
      loadImg (item)  //下载图片
    })
}

// 封装下载图片到本地
function loadImg (url) {
    https.get(url, (res) => {
      res.setEncoding("binary"); // 设置response的编码为binary(二进制)否则会下载下来的图片打不开
      var imgData = '';
      res.on('data', (chunk) => {
        imgData += chunk;
      })
      res.on('end', () => {
      // 将爬到的图片下载到本地,下载前要确认根目录下有images文件夹,否则会fail
        fs.writeFile('./images/' + Math.floor(Math.random() * 100000) +'.png', imgData, "binary", (error) => {
        if(error){
          console.log("down fail");
        } else {
          console.log("down success");
        }
      });
    })
  })
}

// 开启监听服务
server.listen('8888',()=>{
    console.log('localhost:8888')
})

创建好服务,定义好过滤方法filterData以及下载图片的方法loadImg后。通过命令node server.js启动服务。然后在浏览器中输入网址localhost://8888,就会发现神奇的一幕出现了:几十张图片秒下载。

同理,下载视频等文件都是OK的。

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇