SplderApi2
Node-SplderApi2 第二版
基於Node 的網路爬蟲 API介面 包括前端開發日報、kugou音樂、前端top框架排行、妹紙福利、搞笑視訊、段子笑話、各類視訊新聞資訊 熱點詳情介面資料
原始碼目錄結構 地址
GitHub :https://github.com/ecitlm/Node-SpliderApi/tree/splider2
環境要求
需要安裝node express
部署執行
$ git clone https://github.com/ecitlm/Node-SpliderApi.git
$ npm install
### 執行
$ node app.js
複製程式碼
伺服器啟動預設埠為3001 、啟動之後就可以開啟了介面服務了.
介面檔案
├─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.js
get
方法
/**
* 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
介面返回資料