欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个超级简单的node.js爬虫(内附表情包)

程序员文章站 2022-06-30 19:54:29
...

之所以会想到要写爬虫,并不是出于什么高大上的理由,仅仅是为了下载个表情包而已……
容我先推荐一下西乔出品的神秘的程序员表情包。
这套表情包着实是抵御产品、对付测试、嘲讽队友、恐吓前任的良品,
不过不知道用多了会不会挨揍……
however,我就是想要这套表情包,但是因为腾讯的图片链接的问题,直接用chrome另存为的话,无法识别图片格式,而且这么多图一个个另存也太麻烦了,身为程序员怎么能做这种重复性的工作呢?
这种情况下就该上爬虫了,因为目的很简单,所以也不搞太复杂的爬虫,怎么简单怎么来,这里我用了两个包,分别是:

request:
这个包的原理我也没仔细看,大概就是对http.get的封装之类的吧,这个包可以用来简化请求网页和下载图片的过程,其实这个过程用http.get来写也不是很复杂,但是能懒则懒嘛……

cheerio:
这个包类似于一个简化的jQuery,只包含dom部分的功能,而且专门用于node环境中运行,我用它来解析页面。

开始干活

先用npm安装一下需要的包

npm install request cheerio

然后引入到JS文件中,并简单写一下下载图片的代码

"use strict"
const request = require('request')
const cheerio  = require('cheerio')
const fs = require('fs')
//下载
const download = (name, src, type)=>{
    let ws = fs.createWriteStream('./download/'+id+'.'+type)
    request(src).pipe(ws)
}

之后需要获取页面内容,并交给cheerio解析

const url = ""
request(url, (error, response, body)=>{
    let $ = cheerio.load(body)
    //在页面里寻找想要的图片并下载
    console.log('done')
})

在写剩下的代码之前,我得先看看目标页面到底是什么样的,不然也没法找图片啊_(:з」∠)_
F12
一个超级简单的node.js爬虫(内附表情包)

页面很简单,大概思路就是先找到所有包括data-type的img标签,然后data-type就是图片类型,data-src就是图片地址。
补上关键代码之后,爬虫大概是这个样子的:

"use strict"
const request = require('request')
const cheerio  = require('cheerio')
const fs = require('fs')
//下载
const download = (name, src, type)=>{
    let ws = fs.createWriteStream('./download/'+name+'.'+type)
    request(src).pipe(ws)
}

const url = ""
request(url, (error, response, body)=>{
    let $ = cheerio.load(body)
    let imgs = $("img[data-type]")
    imgs.each((i,e)=>{
        let type = $(e).attr('data-type')
        let src = $(e).attr('data-src')
        download(i, src, type)
    })
    console.log('done')
})

cheerio的语法和jquery基本一样,着实省了好多事。
现在这个爬虫填上url就可以用啦╰(°▽°)╯
另外附上做好的QQ表情包,献给连代码都懒得复制的同学……
神秘的程序员

转载于:https://www.cnblogs.com/Eden-cola/p/web_crawler_by_nodejs.html