准备工作 安装node 环境 然后下载npm 切换淘宝镜像
代码如下
const axios = require('axios')
const cheerio = require('cheerio')
const fs = require('fs')
// 需要引入的模块
const urlmove = 'http://www.bbsnet.com/gif'
// 请求回来的promise对象数据
function req (url) {
return axios.get(url).then(function (data) {
// console.log(data)
return data
}).catch((error) => {
return false
})
}
// 获取主页nav内容的函数
async function getHome () {
const { data } = await req(urlmove)
const $ = cheerio.load(data)
let arr = []
$('#menu-nav a').each((index, el) => {
let obj = {
name: $(el).text(),
path: $(el).attr('href')
}
arr.push(obj)
})
arr.pop()
arr.shift()
return JSON.parse(JSON.stringify(arr))
}
// 获取每一个导航的数据
async function main () {
let arr = await getHome()
// console.log(arr);
fs.mkdirSync('分类', function () {
// console.log('创建分类文件夹');
})
arr.forEach(async (item) => {
let i = 1
// 循环获取每一页表情包
let arr = []
let flag = ''
while (flag = await req(item.path + '/page/' + i)) {
const { data } = await req(item.path + '/page/' + i)
const $ = cheerio.load(data)
$('#post_container img').each((index, el) => {
let obj = {
title: $(el).attr('alt'),
path: $(el).attr('src')
}
arr.push(obj)
})
i++
}
fs.writeFile('./分类/' + item.name + '.txt', JSON.stringify(arr), function (err) { })
})
}
//调用函数
main()
然后就会爬取到数据