node.js 爬取网页数据

准备工作 安装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()

在这里插入图片描述
然后就会爬取到数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值