美文网首页
实现获取cnode社区自定义api

实现获取cnode社区自定义api

作者: Evtion | 来源:发表于2017-05-16 12:45 被阅读0次

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已经成功了。

相关文章

网友评论

      本文标题:实现获取cnode社区自定义api

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