基於 Node+express 爬蟲的數據 API,爬一套本身的api數據(2)

SplderApi2

Node-SplderApi2 第二版javascript

基於Node 的網絡爬蟲 API接口 包括前端開發日報、kugou音樂、前端top框架排行、妹紙福利、搞笑視頻、段子笑話、各種視頻新聞資訊 熱點詳情接口數據前端

源代碼目錄結構
地址vue

GitHub :https://github.com/ecitlm/Nod...java

查看文檔node

project.png

環境要求

須要安裝node expressreact

部署運行

$ git clone https://github.com/ecitlm/Node-SpliderApi.git
$ npm install
### 運行
$ node app.js

服務器啓動默認端口爲3001 、啓動以後就能夠開啓了接口服務了.webpack

接口文件git

├─api
│  ├─it
│  │      daily_info.js
│  │      daily_list.js
│  │      web_frame.js
│  │      
│  ├─joke
│  │      joke_img.js
│  │      joke_list.js
│  │      joke_photo.js
│  │      
│  ├─music
│  │      new_songs.js
│  │      plist.js
│  │      plist_songs.js
│  │      rank_list.js
│  │      rank_list_info.js
│  │      search.js
│  │      singer_classify.js
│  │      singer_info.js
│  │      singer_list.js
│  │      song_info.js
│  │      song_lrc.js
│  │      
│  ├─news
│  │      news_detail.js
│  │      news_list.js
│  │      video_list.js
│  │      
│  └─photo
│          huaban.js
│          photo_list.js
│          photo_type.js
│          photo_view.js
│          
└─web
        daily_info.js
        daily_list.js
        index.js
        photo.js

網絡請求封裝 httpServer.jsgithub

get方法web

/**
 * http get網絡請求封裝
 * @param {string} 域名
 * @param {obj} 參數
 * @param {string} 接口路徑
 * @param {bool} true false 是否爲https
 * @returns
 */
function httpGet(host, data, path, status) {
    var options = {
        host: host,
        port: 80,
        path: path + querystring.stringify(data),
        method: 'GET',
        encoding: null,
        headers: {
            'Content-Type': 'application/json',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36',
        },
    };
    //判斷是否爲https請求
    if (status) {
        http = require('https');
        options.port = 443;
    }

    return new Promise(function(resolve, reject) {
        let body = '';
        var get_req = http.request(options, function(response) {
            //response.setEncoding('utf8');
            response.on('data', function(chunk) {
                body += chunk;
            });

            response.on('end', () => {
                resolve(body);
            });

            response.on('error', err => {
                reject(err);
            });
        });
        get_req.end();
    });
}

POST方法

/**
 * http POST 請求
 * @param {string} 域名
 * @param {obj} 參數
 * @param {string} 接口路徑
 * @param {bool} true false 是否爲https
 * @returns
 */
function httpPost(host, data, path, status) {
    var data = querystring.stringify(data);
    var options = {
        host: host,
        port: '80',
        path: path,
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36',
            'Content-Length': Buffer.byteLength(data), //返回字符串實際佔據的字節長度
        },
    };
    //判斷是否爲https請求
    if (status) {
        http = require('https');
        options.port = 443;
    }
    return new Promise(function(resolve, reject) {
        let body = '';
        var post_req = http.request(options, function(response) {
            //console.log(response.statusCode);
            response.on('data', function(chunk) {
                body += chunk;
            });

            response.on('end', () => {
                resolve(body);
            });

            response.on('error', err => {
                reject(err);
            });
        });

        post_req.write(data);
        post_req.end();
    });
}

1.前端開發日報接口

前端開發日報列表、單日日報、前端框架top100

1.1 最新前10天日報列表

必選參數:

接口地址:
api/daily_list

調用例子:
http://localhost:3001/api/daily_list

接口返回數據

{
    "code": 200,
    "data": [
        {
            "title": "20171206 前端開發日報",
            "id": 20171206,
            "description": "基於 Vue-cli 的 webpack 通用封裝, 更易簡單的開始你的項目;Webapck+Vue多頁面商城模板;前端每週清單第 42 期:V8 的執行流與優化, Pinterest 的 PWA 實踐, Rust 與 WebAssembl ...",
            "date": "2017-12-06"
        },
        {
            "title": "20171127 前端開發日報",
            "id": 20171127,
            "description": "一次 H5 「保存頁面爲圖片」 的踩坑之旅;純 CSS 實現波浪效果;前端本地文件操做與上傳;函數聲明、函數表達式、匿名函數、當即執行函數詳解;Chromium 新的彈窗機制以及 HTML 的 dialog 元素;RxJS 5 中文文檔;C ...",
            "date": "2017-11-27"
        }
    ],
    "msg": ""
}

1.2 單日日報內容

必選參數:
日期 id

接口地址:
api/daily_info/:id

調用例子:
http://localhost:3001/api/daily_info/20171206

接口返回數據

{
    "code": 200,
    "data": {
        "title": "20171206 前端開發日報",
        "description": "基於 Vue-cli 的 webpack 通用封裝, 更易簡單的開始你的項目;Webapck+Vue多頁面商城模板;前端每週清單第 42 期:V8 的執行流與優化, Pinterest 的 PWA 實踐, Rust 與 WebAssembly 應用;如何利用Git中的tag管理項目版本號;vue-loader 源碼解析系列之 selector;[javascript]搞清this的指向只需問兩個問題;分享一個比較全的webpack配置,分爲基礎和適配antdesign的配置;使用JavaScript 寫web路由",
        "links": [
            {
                "title": "基於 vue-cli 的 webpack 通用封裝, 更易簡單的開始你的項目",
                "description": "基於 vue-cli 的 webpack 通用封裝, 更易簡單的開始你的項目 vayne 薇恩 基於 vue-cli 的 webpack 通用封裝, 更易簡單的開始你的項目 使用 npm i vayne -g yarn add vayne -D --registry",
                "url": "https://juejin.im/entry/5a20e7056fb9a045284647ce"
            },
            {
                "title": "簡單案例學習Vue.js單元測試",
                "description": "簡單案例學習Vue.js單元測試 使用 vue-cli 能夠直接生成一個包含 unit & e2e 測試的開發環境。這裏咱們主要針對 unit 文件進行 單元測試 。 (本發首發於個人筆記網站) 命令行效果預覽 test/unit 文件結構及分析 ├── coverage ├── jest.conf.js ├── setup.js └── specs ├── api-test.spec.js ├── click-test.spec.js ...",
                "url": "http://www.tuicool.com/articles/zYnE7vZ"
            },
            {
                "title": "Web開發這十年",
                "description": "Web開發這十年 做者 | Ivan Zarea 譯者 | 薛命燈 Web 開發這十年都發生了怎樣的變化?來看看 Ivan Zarea 總結的 Web 開發這十年。如下內容摘譯自做者的博客,查看英文原文:",
                "url": "https://juejin.im/entry/5a2521f46fb9a0451463e11c"
            }
        ]
    },
    "msg": ""
}

1.3 前端框架top 100

返回前端top 100框架數據

必選參數:

接口地址:
api/web_frame

調用例子:
http://localhost:3001/api/web_frame

接口返回數據

{
    "code": 200,
    "data": [
        {
            "index": "1",
            "thumb": "https://awesomes.oss-cn-beijing.aliyuncs.com/repo/151009222011-95-1.jpg?x-oss-process=style/subject_repo",
            "title": "bootstrap",
            "description": "目前最流行的 HTML, CSS 和 JavaScript 框架,用於開發響應式,移動端先行的 web 項目",
            "url": "https://github.com/twbs/bootstrap"
        },
        {
            "index": "2",
            "thumb": "https://awesomes.oss-cn-beijing.aliyuncs.com/repo/151011005628-65-1.jpg?x-oss-process=style/subject_repo",
            "title": "react",
            "description": "Facebook 推出的一款聲明式的,高效的,靈活的用於建立用戶接口的JavaScript 庫",
            "url": "https://github.com/facebook/react"
        }
    ]
}

2.笑話段子搞笑圖片

笑話段子、搞笑圖片

2.1 段子列表

段子列表、每頁返回20條數據

必選參數:
'page' 頁數

接口地址:
/api/joke_list/:page

調用例子:
http://localhost:3001/api/joke_list/1

接口返回數據

{
    "code": 200,
    "data": [
        {
            "title": "作了個好夢,嚇醒了。~~~~割~~~~;作夢剛開始好像是抱着老婆的咪咪喊別人的名字,後來想 ",
            "source": "糗事百科",
            "digest": "作了個好夢,嚇醒了。~~~~割~~~~;作夢剛開始好像是抱着老婆的咪咪喊別人的名字,後來想一想不對啊,應該抱着別人喊老婆纔對,這樣老婆就會高興了,忽然就驚醒了,個人老婆在哪呢。\u0001[流鼻血]\u0001[流鼻血]\u0001[流鼻血]"
        },
        {
            "title": "奶奶去世四十天了,生前最大的願望就是想看到我女友,個人高中同窗在那個醫院作護士,是她幫了我這個忙,冒充了十分鐘,她應該不玩段子的,仍是衷心祝全部醫院的天使一輩子平安!",
            "source": "內涵段子",
            "digest": "奶奶去世四十天了,生前最大的願望就是想看到我女友,個人高中同窗在那個醫院作護士,是她幫了我這個忙,冒充了十分鐘,她應該不玩段子的,仍是衷心祝全部醫院的天使一輩子平安!"
        }
    ],
    "msg": ""
}

2.2 段子圖片

天天返回20條最新數據

必選參數:
'無'

接口地址:
/api/joke_img/

調用例子:
http://localhost:3001/api/joke_img

接口返回數據

{
    "code": 200,
    "data": [
        {
            "title": "泡妞最帥的姿式,hold啊",
            "thumburl": "http://ww3.sinaimg.cn/large/bd759d6djw1ezaly9mqf3j20c80exdgk.jpg",
            "sourceurl": "http://down.laifudao.com/images/tupian/20151210155356.jpg"
        },
      
        {
            "title": "麥當勞不如漢堡王的一個鐵證!",
            "thumburl": "http://ww4.sinaimg.cn/large/94c4bcf2jw1dzwn3wx3tmj.jpg",
            "sourceurl": "http://down.laifudao.com/images/tupian/201212172720.jpg"
        },
        {
            "title": "幸福的拖拉機手",
            "thumburl": "http://ww1.sinaimg.cn/large/bcc86cc5jw1dzq54qxdd9j.jpg",
            "sourceurl": "http://down.laifudao.com/images/tupian/aa70448297.jpg"
        }
    ],
    "msg": ""
}

2.3 搞笑圖片

每頁返回10條最新數據

必選參數:
'無'

接口地址:
/api/joke_photo/:page

調用例子:
http://localhost:3001/api/joke_photo/1

接口返回數據

{
    "code": 200,
    "data": [
        {
            "title": "牛逼了個人公交哥",
            "img": "http://img.xiaoliaoba.cn/public/uploads/images/20171206/1512529717570948.png"
        },
        {
            "title": "好污的鼠標===",
            "img": "http://img.xiaoliaoba.cn/public/uploads/images/20171128/1511844635661496.png"
        },
        {
            "title": "撩妹,都是套路,防不勝防",
            "img": "http://img.xiaoliaoba.cn/public/uploads/images/20171128/1511844447422391.png"
        },
        {
            "title": "能不能專心點?",
            "img": "http://img.xiaoliaoba.cn/public/uploads/images/20171128/1511844362909028.png"
        },
        {
            "title": "寶貝,我老公不在家",
            "img": "http://img.xiaoliaoba.cn/public/uploads/images/20171124/1511508449453478.png"
        }
    ],
    "msg": ""
}

3. 新聞資訊

新聞列表、新聞視頻、新聞詳情

3.1 新聞列表

新聞列表

必選參數:
type : 新聞類型
0 熱點新聞 1 社會新聞 2 娛樂新聞 3體育新聞 4美文 5科技 6財經 7 時尚

名稱 熱點 社會 娛樂 體育 美文 科技 財經 時尚
type 0 1 2 3 4 5 6 7

接口地址:
/api/news_list/:type

調用例子:
http://localhost:3001/api/news_list/1

接口返回數據

{
    "media_name": "環球網",
    "ban_comment": 1,
    "abstract": "《吉林日報》今天用一個整版介紹了核武器常識及在遭到核攻擊時的防禦方法。這個版的內容傳到互聯網上後,迅速刷屏,引發紛紛議論。目前半島局勢緊張,朝鮮已進行了六次核試驗,被普遍認爲已經擁有了核彈頭。另外朝鮮的導彈技術今年以來快速突破,成功試射了射程可覆蓋美國本土的洲際彈道導彈。",
    "image_list": [],
    "datetime": "2017-12-06 21:13",
    "article_type": 1,
    "tag": "news_military",
    "has_m3u8_video": 0,
    "keywords": "半島,朝鮮半島,朝鮮,吉林,半島局勢",
    "display_dt": 1512539220,
    "has_mp4_video": 0,
    "aggr_type": 1,
    "cell_type": 0,
    "article_sub_type": 1,
    "bury_count": 2,
    "title": "社評:吉林日報介紹核武常識,意味着什麼",
    "source_icon_style": 1,
    "tip": 1,
    "has_video": false,
    "share_url": "http://m.toutiao.com/group/6496307172245242381/?iid=0&app=news_article",
    "source": "環球網",
    "comment_count": 63,
    "article_url": "https://m.huanqiu.com/r/MV8wXzExNDI3MjE0XzI4Ml8xNTEyNTM5MjIw",
    "publish_time": 1512539220,
    "group_flags": 0,
    "action_extra": "{\"channel_id\": 3189398996}",
    "tag_id": "6496307172245242381",
    "source_url": "/item/6496307172245242381/",
    "display_url": "http://toutiao.com/group/6496307172245242381/",
    "is_stick": false,
    "item_id": "6496307172245242381",
    "repin_count": 2308,
    "cell_flag": 11,
    "source_open_url": "sslocal://profile?uid=5954781019",
    "level": 0,
    "digg_count": 1,
    "behot_time": 1512566010,
    "hot": 1,
    "cursor": 1512566010999,
    "url": "https://m.huanqiu.com/r/MV8wXzExNDI3MjE0XzI4Ml8xNTEyNTM5MjIw",
    "like_count": 1,
    "user_repin": 0,
    "has_image": false,
    "video_style": 0,
    "media_info": {
        "avatar_url": "http://p1.pstatp.com/large/4d00054b126ceaf920",
        "media_id": 5954781019,
        "name": "環球網",
        "user_verified": false
    },
    "group_id": "6496307172245242381"
}

3.2 新聞詳情

每頁返回10條最新數據

必選參數:

item_id 新聞列表的 item id

接口地址:
/api/news_detail/:item_id

調用例子:
http://localhost:3001/api/news_detail/6496307172245242381

接口返回數據

{
    "detail_source": "環球網",
    "media_user": {
        "no_display_pgc_icon": false,
        "avatar_url": "http://p9.pstatp.com/thumb/4d00054b126ceaf920",
        "id": "5954781019",
        "screen_name": "環球網"
    },
    "publish_time": 1512568020,
    "title": "社評:吉林日報介紹核武常識,意味着什麼",
    "url": "https://m.huanqiu.com/r/MV8wXzExNDI3MjE0XzI4Ml8xNTEyNTM5MjIw",
    "is_original": false,
    "is_pgc_article": false,
    "content": "<p>《吉林日報》今天用一個整版介紹了核武器常識及在遭到核攻擊時的防禦方法。這個版的內容傳到互聯網上後,迅速刷屏,引發紛紛議論。</p>",
    "source": "環球網",
    "comment_count": 63,
    "creator_uid": 5954781019
}

3.3 視頻數據

必選參數:
type : 類型
0搞笑視頻 1美女視頻 2體育視頻 3 新聞現場 4漲姿式 5獵奇 6 黑科技 默認搞笑視頻


page : 分頁 如:0/10/20/30

type 0 1 2 3 4 5 6
名稱 搞笑 美女 體育 新聞現場 漲姿式 獵奇 黑科技

接口地址:
api/video_list/:type/:page

調用例子:
http://localhost:3001/api/video_list/1/0

返回數據(因爲長度就展現2條看)以下JSON:

4.kugou音樂wap端接口數據

音樂新歌榜單、音樂歌單、排行榜、音樂詳情、歌詞、搜索、歌手信息、
詳細可看源代碼 api/music

4.1 音樂新歌榜單

必選參數:

接口地址:
api/new_songs

調用例子:
http://localhost:3001/api/new_songs

接口返回數據

原文地址:https://code.it919.cn/2017/12...

相關文章
相關標籤/搜索