实现获取cnode社区自定义api

cnodejs社区是国内火热的nodejs交流和学习的地方,作为新生级菜鸟,经常上社区浏览精华版帖子。cnodejs提供社区的api,但是个人想自定义一个获取全部帖子相关信息的api,马上就着手coding。

  • 代码详细信息如下:
const request=require('request');
const cheerio=require('cheerio');
const fs=require('fs');
const path=require('path');
const express=require('express');
const app=express();
const url="https://cnodejs.org/?tab=all&page=";
const pagesNum=5;
let allContents=new Array();
for(let i=1;i<=pagesNum;i++){
    request(url+i,(error,response,body)=>{
        if(error && response.statusCode==200){
            console.log(error);
        }
        accepteData(body);
    });
}

function translate($,strings){
        let Obj=$(strings).toArray();
        return Obj; 
}

function accepteData(data){
    let $=cheerio.load(data);
    let user=translate($,'.user_avatar img');
    for(let i=0;i<user.length;i++){
        let content={
            "user":{
                "name":user[i].attribs.title,
                "avatar":user[i].attribs.src
            },
            "title":translate($,'.topic_title_wrapper a')[i].attribs.title,
            "article":'https://cnodejs.org'+translate($,'.topic_title_wrapper a')[i].attribs.href,
            "types":$('.topic_title_wrapper span')[i]?translate($,'.topic_title_wrapper span')[i].children[0].data : "null",
            "count":{
                "reply":translate($,'.count_of_replies')[i].children[0].data.trim(),
                "click":translate($,'.count_of_visits')[i].children[0].data.trim()
            },
            "last_active_time":$('.last_time span')[i]?translate($,'.last_time span')[i].children[0].data :"null",

        };
        allContents.push(content);
        
    }
    
    
}
app.get('/api/all',(req,res)=>{
    res.json(allContents);
});
app.listen(3000,()=>{
    console.log('listening at 3000');
});
  • 复制上述代码并保存在本地的文件中,(前提是已经安装nodejs并且已经安装了上述源码中的依赖文件);可以使用以下命令安装依赖文件:
npm install express cheerio request  --save --dev
  • 等待安装成功之后,在源码的当前目录,运行命令:
node test.js #(按照你自己保存的文件名来运行)
获取到json格式api
  • 获取cnode社区自定义api已经成功了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容