资讯专栏INFORMATION COLUMN

基于 Node+express 爬虫的数据 API,爬一套自己的api数据(2)

beanlam / 3211人阅读

摘要:目前半岛局势紧张,朝鲜已进行了六次核试验,被广泛认为已经拥有了核弹头。另外朝鲜的导弹技术今年以来快速突破,成功试射了射程可覆盖美国本土的洲际弹道导弹。这个版的内容传到互联网上后,迅速刷屏,引起纷纷议论。

SplderApi2

Node-SplderApi2 第二版

基于Node 的网络爬虫 API接口 包括前端开发日报、kugou音乐、前端top框架排行、妹纸福利、搞笑视频、段子笑话、各类视频新闻资讯 热点详情接口数据

源代码目录结构
地址

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

查看文档

环境要求

需要安装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": "

《吉林日报》今天用一个整版介绍了核武器常识及在遭到核攻击时的防护方法。这个版的内容传到互联网上后,迅速刷屏,引起纷纷议论。

", "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...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90252.html

相关文章

  • 达到1000声望以后

    摘要:但是半年来,养成积极帮助他人的习惯后,我发现自己不知不觉也跨过了声望的门槛。总之,这两个因素让我决定爬一爬自己通过回答得到的声望。有的操作可能被用户取消,但仍保留在声望记录上。看来通过文章,尤其是翻译文章,得到的声望占的水分挺大的。 起因 我注册SegmentFault账号是在2016年12月,但是正式开始参与社区贡献是2017年9月。那时候我刚刚毕业,参加工作。到现在已经半年了。 ...

    GT 评论0 收藏0
  • node爬虫爬取网页图片

    摘要:目录安装,并下载依赖搭建服务请求我们要爬取的页面,返回安装我们开始安装,可以去官网下载下载地址,下载完成后运行使用,安装成功后会出现你所安装的版本号。 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片,自己就想着作为一个码农,可以把这些图片都爬取下来做成一个微信小程序,说干就干,了解一下基本都知道怎么做了,整理分享一波给大家。 目...

    ygyooo 评论0 收藏0
  • Nodejs爬虫实战项目之链家

    摘要:很基础,不喜勿喷转载注明出处爬虫实战项目之链家效果图思路爬虫究竟是怎么实现的通过访问要爬取的网站地址,获得该页面的文档内容,找到我们需要保存的数据,进一步查看数据所在的元素节点,他们在某方面一定是有规律的,遵循规律,操作,保存数据。 说明 作为一个前端界的小学生,一直想着自己做一些项目向全栈努力。愁人的是没有后台,搜罗之后且学会了nodejs和express写成本地的接口给前端页面调用...

    noONE 评论0 收藏0
  • Nodejs爬虫实战项目之链家

    摘要:很基础,不喜勿喷转载注明出处爬虫实战项目之链家效果图思路爬虫究竟是怎么实现的通过访问要爬取的网站地址,获得该页面的文档内容,找到我们需要保存的数据,进一步查看数据所在的元素节点,他们在某方面一定是有规律的,遵循规律,操作,保存数据。 说明 作为一个前端界的小学生,一直想着自己做一些项目向全栈努力。愁人的是没有后台,搜罗之后且学会了nodejs和express写成本地的接口给前端页面调用...

    MartinDai 评论0 收藏0
  • 一个vue+express+nodejs爬虫构建伪整站移动书城

    摘要:数据有了,接下来该构建了,谷歌了一下发现用好像不错,于是又学习了部分,构建了所需的。采用分离的写法,分开写,方便维护。另外本项目中还写了一些可直接迁移使用的组件比如组件左右弹出层的背景阴影组件。最后上点项目截图界面是抄起点的 项目地址:点击 预览地址:点击 api地址:点击 爬虫地址:点击 技术栈:vue + vue-router + vuex + webpack + axios ...

    levius 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<