索鸟网

  1. 首页
  2. 基于Koa2和superagent实现的英语四六级成绩查询系统,同时提供免费API接口

基于Koa2和superagent实现的英语四六级成绩查询系统,同时提供免费API接口


koa2-cet

前言

可能很多人都已经写过爬虫了,但是不一定都知道superagent这个爬虫利器,写这篇文章的目的是通过一个具体项目,推荐大家以后写爬虫的时候可以用用superagent,真的超级好用。

介绍

这是一个基于Koa2和superagent实现的英语四六级成绩查询系统,项目使用superagent爬取学信网的数据,然后使用cheerio解析数据,最后将爬取到的结果以JSON或者JSONP的方式返回给前台。

预览

在线预览地址: https://cet.lenshen.com
源码:https://github.com/lensh/koa2...

测试用户:
姓名:汪磊
准考证号:360021162100112

技术栈

Angular:实现前端页面构建
Koa2:实现服务端具体业务逻辑
ES6、ES7、ES8:服务端使用ES6语法,promise/async/await 处理异步
superagent:爬虫的核心,进行模拟请求
cheerio:解析DOM结构,爬取需要的数据
cors:服务端返回数据时做了cors设置,允许跨域
jsonp:支持JSONP请求,客户端需要传入回调函数名称
pm2:服务端使用pm2部署,常驻进程,比forever好用得多(https://github.com/Unitech/pm2

API接口

本系统免费提供API接口,具体接口如下所示:

URL: https://cet.lenshen.com/api/search?user=姓名&number=准考证号
参数说明:
    user  姓名
    number  准考证号
请求方式: GET
请求成功返回json:
{ 
    "code":200,
    "message":"查询成功",
    "data":{ 
          "name":"张三",   //姓名
          "school":"南昌大学",  //学校
          "type":"英语六级",  //考试类别
          "number":"360021162347654",  //准考证号
          "total":"530",   //总分
          "listen":"170",   //听力
          "read":"200",  //阅读
          "writing":"160"  //写作和翻译
    }
}
请求失败返回json:
{ 
    "code":400,
    "message":"查询失败,请检查你的信息是否无误"
}

注意:以上接口可以使用后台代理请求数据,也可以使用ajax请求数据(因为设置了cors)

如果使用JSONP,则需要在url里传入callback:

URL:https://cet.lenshen.com/api/search?callback=cb&&number=准考证号&user=姓名
参数说明:  
    callback  回调函数名称
    user  姓名 
    number  准考证号
请求方式: GET
请求成功返回jsonp:
cb({
    "code":200,
    "message":"查询成功",
    "data":{ 
          "name":"张三",   //姓名
          "school":"南昌大学",  //学校
          "type":"英语六级",  //考试类别
          "number":"360021162347654",  //准考证号
          "total":"530",   //总分
          "listen":"170",   //听力
          "read":"200",  //阅读
          "writing":"160"  //写作和翻译
    }
})
请求失败返回jsonp:
cb({ 
    "code":400,
    "message":"查询失败,请检查你的信息是否无误"
})

最后

如果觉得这个项目还不错的话,那就毫不吝啬地给个star吧。

cheerio angular.js koa2 superagent

来源地址:https://segmentfault.com/a/1190000010488721 版权归作者所有!

相关教程

  • 用 nuxt 开发部署一个 v2ex

    先放出Github地址:https://github.com/OrangeXC/n2ex 里面有线上网站的链接,因为链接随时可能变,在这里不直接给网站链接。 之前写过一篇 nuxt 入门级的文章 Vue 基于 NUXT 的 SSR,主要说一下 nuxt 是什么,以及为什么使用。 这里声明一下,不建议去阅读上一篇文章,因为当时写博文的时候是 0.8.0
  • 调用arukas接口实时获取ss配置信息

    之前在arukas.io免费docker搭建ss服务以及免费日本樱花搭建谷歌镜像两文中对arukas折腾过一番,我们可以利用其免费搭建ss以及谷歌镜像,但是有个不足的是arukas的app ip和端口号经常在变,使我们在使用的过程中非常不便,每次都要登录到官网去获取实时的ip和端口。本文继续对arukas继续折腾,研究它的api文档,从而实现实时获取ss
  • 免费天气API,全国天气 JSON API接口,可以获取五天的天气预报

    原文链接:http://www.sojson.com/blog/23...稳定高效的天气API接口是很少有的,本站前一段时间开发了一个万年历,需要带天气预报,花了几天功夫,集成和容错处理好对外开放的天气接口。天气接口支持返回JSON和XML结果。并且可以获取到昨天,以及今天和未来4 天的天气预报。那么下面直接介绍天气预报的接口吧。 天气API详情介绍 在
  • CrapApi —— API接口管理系统部署

    CrapApi能做什么 主要功能:项目管理、项目成员管理、用户管理、模块管理、接口管理、接口版本管理、接口拷贝、接口文档pdf下载、接口mock、模块加密访问、接口在线调试、数据字典管理、数据字典加密访问多管理员、多权限、多角色管理、自定义菜单、自定义网站样式、文档留言、错误码管理、接口排序、DOC、PDF、TEXT、EXCEL等资源管理、支持版本号控
  • nodejs练手爬虫+API测试

    项目说明 这是一个基于express的node后端API服务,当时只是想抓取字幕组网站的下载资源,以备以后通过nas的方式去自动下载关注的美剧。不过后来慢慢扩展了几个API,以备以后写练手的webapp时,遇到没有数据调用的尴尬┑( ̄Д  ̄)┍ 项目地址:nodejs练手爬虫+API测试 字幕组网站资源抓取原理: 首先发送登录请求到目标登录地址,登录
  • 图解基于node.js实现前后端分离

    首先庆祝 [w3ctech长沙站第12期技术分享会] 圆满成功,感谢组织方邀请~ 因为会上出了个意外,ppt图片全部丢失,只好对着白板跟大家交流了半个多小时。由于我做演讲不喜欢写太多的文字,没有图片的情况下讲漏了一些内容。这篇文章是我在会上分享内容对照ppt进行地整理。 基本介绍 首先从一个重要的概念“模板”说起。 广义上来说,web中的模板就是填充数据后可以生
  • 前端知识大全 - 收藏集 - 掘金

    Vue2全家桶+Echarts实现多种图表(附源码) - 前端 - 掘金数据可视化 将数据通过图表的形式展现出来将大大的提升可读性和阅读效率 本例包含柱状图、折线图、散点图、热力图、复杂柱状图、预览面板等 后续会有新的版本,欢迎大家关注 技术栈 vue2.x vuex 存储公共变量,如色值... 最新最全的 Android 开源项目合集 - Androi
  • 基于koa2开发的用户中心

    Ucenter github API doc 版本 version content date v0.1.0 项目迁移构建 17.04.23 v0.2.0 支持通过github授权登录 17.05.23 model设计 redis app.js key type name apps hash hget apps {a