可能不少人都已經寫過爬蟲了,可是不必定都知道superagent這個爬蟲利器,寫這篇文章的目的是經過一個具體項目,推薦你們之後寫爬蟲的時候能夠用用superagent,真的超級好用。前端
這是一個基於Koa2和superagent實現的英語四六級成績查詢系統,項目使用superagent爬取學信網的數據,而後使用cheerio解析數據,最後將爬取到的結果以JSON或者JSONP的方式返回給前臺。git
在線預覽地址: https://cet.lenshen.com
源碼:https://github.com/lensh/koa2...github
測試用戶:
姓名:汪磊
准考證號:360021162100112ajax
Angular:實現前端頁面構建
Koa2:實現服務端具體業務邏輯
ES六、ES七、ES8:服務端使用ES6語法,promise/async/await 處理異步
superagent:爬蟲的核心,進行模擬請求
cheerio:解析DOM結構,爬取須要的數據
cors:服務端返回數據時作了cors設置,容許跨域
jsonp:支持JSONP請求,客戶端須要傳入回調函數名稱
pm2:服務端使用pm2部署,常駐進程,比forever好用得多(https://github.com/Unitech/pm2)json
本系統免費提供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:promise
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吧。cors