nodejs爬取Font Awesome字体class(Font

作者: 知止至得 | 来源:发表于2017-09-26 14:19 被阅读119次

    最近因为业务需要引入了 font awesome 字体库,准备做一个自选功能,需要用到所有的class,无奈官方的 DOM 结构不合适,于是变想到把所有class爬取下来。整理结构如下

    数据结构

    整体数据是一个list数组,每个json对象的key就是对应模块的名称,json中数组就是该模块所有class,因为我们自定义了前缀,所以没有官方默认的 fa 前缀,有需要的童鞋可以自己加上。

    我爬的是4.7版本,数据 http://pan.baidu.com/s/1qY9JWM4,需要其他版本的可以自己爬取,源码

    const request = require('request')
    const cheerio = require('cheerio')
    const fs = require('fs');
    const app = require('express')();
    
    // 首字母大写转换
    function firstUpcase (str){
      return str.charAt(0).toUpperCase()+str.substring(1);
    }
    
    app.get('/',function (err,res,next) {
      request('http://www.fontawesome.com.cn/faicons/', (error, response, body) => {
        if (error) {
          console.log(error)
        } else if (response.statusCode == 200) {
          const $ = cheerio.load(body)
          let allClass = {}
          $('#icons > section').each(function () {
            // 模块ID
            let sectionId = $(this).attr('id');
            // 转化ID 中划线为 驼峰风格
            let sectionKeyArray = sectionId.split('-');
            let sectionKey = '';
            for(let i=0,len=sectionKeyArray.length;i<len;i++){
              if(i === 0){
                sectionKey += sectionKeyArray[i];
              }else{
                sectionKey += firstUpcase(sectionKeyArray[i])
              }
            }
            // 模块下所有class
            let itemClass = []
            $(this).find('.fontawesome-icon-list .fa-hover').each(function () {
              const iconClass = $(this).find('a').text().replace('Example of', '')
                                            .replace('(alias)', '').trim()
              itemClass.push(iconClass)
            })
            allClass[sectionKey] = itemClass
          })
          console.log('****************************')
          console.log(allClass)
          console.log('****************************')
          res.send(allClass)
        }
      })
    })
    
    app.listen(3000,function () {
      console.log('服务启动成功,端口3000')
    })
    
    

    相关文章

      网友评论

        本文标题:nodejs爬取Font Awesome字体class(Font

        本文链接:https://www.haomeiwen.com/subject/beysextx.html