孫浩然 武雪明 吉雪蕓
關(guān)鍵詞:高考志愿填報(bào);數(shù)據(jù)庫原理;大數(shù)據(jù)技術(shù);XPath爬蟲技術(shù)
0 引言
河北省普通高考報(bào)名人數(shù)在2016 年就達(dá)到了42.31萬人,到2022年報(bào)名人數(shù)甚至達(dá)到了75.32萬人,僅六年的時(shí)間就增長(zhǎng)了33萬人。數(shù)量激增的考生在高考結(jié)束之后面臨的是大學(xué)招生總數(shù)變化不大的問題,目前大多數(shù)高中考生忙于學(xué)習(xí)知識(shí),鍛煉應(yīng)試能力,考生家長(zhǎng)主要精力用于工作和生活中,這就導(dǎo)致填報(bào)志愿的應(yīng)往屆高中畢業(yè)生不了解當(dāng)年的報(bào)考政策,對(duì)于理想院校歷年分?jǐn)?shù)和招生排名及所選學(xué)校專業(yè)劃分和專業(yè)的優(yōu)劣情況了解不夠充分。為了解決這種由于“信息差”導(dǎo)致的應(yīng)往屆高中畢業(yè)生無法在自己的分?jǐn)?shù)內(nèi)選擇到最好的高等院校的問題,團(tuán)隊(duì)開發(fā)了高考志愿智能推薦系統(tǒng)。
該系統(tǒng)主要為了解決高考填報(bào)志愿人員提供更多院校信息,為更多填報(bào)志愿的人員搭建一個(gè)數(shù)據(jù)準(zhǔn)確、信息全面、搜索便捷的查詢平臺(tái),更有利于解決填報(bào)志愿當(dāng)中遇到的問題。
1 研究現(xiàn)狀、目的及研究?jī)?nèi)容
搜索引擎以一定的策略在互聯(lián)網(wǎng)當(dāng)中進(jìn)行搜集、發(fā)現(xiàn)信息、對(duì)信息進(jìn)行整理、提取、組織和處理,并為用戶提供檢索服務(wù),從而起到信息導(dǎo)航的作用。搜索引擎已經(jīng)廣泛地應(yīng)用到日常生活當(dāng)中,它涵蓋了圖書搜索、旅游出行和信息查找等領(lǐng)域,國(guó)外的發(fā)展較早,在各個(gè)領(lǐng)域也都有了比較成熟的垂直搜索系統(tǒng)[1]。垂直搜索引擎只是搜索互聯(lián)網(wǎng)資源當(dāng)中的某一行業(yè)領(lǐng)域,返回給用戶該領(lǐng)域信息,具有高精度和深度等特點(diǎn)[2]。舉例說明當(dāng)今應(yīng)用廣泛的一個(gè)搜索引擎Tin?Eye。TinEye是網(wǎng)絡(luò)上第一個(gè)以圖搜圖的圖像搜索引擎[3]。TinEye支持語音搜索,搜索欄下有多個(gè)搜索分類選項(xiàng)。圖片視頻分類搜索時(shí),TinEye會(huì)提供關(guān)鍵詞更加細(xì)致的標(biāo)簽,來供用戶選擇,TinEye的搜索分類較少,但是用戶可以選擇使用安全搜索(屏蔽垃圾信息)。
對(duì)于院校信息的獲取和分析當(dāng)中,國(guó)內(nèi)已出現(xiàn)了很多大體量的志愿填報(bào)網(wǎng)站,如掌上高考網(wǎng)站、高??荚嚪?wù)中心、夸克高考等搜索網(wǎng)站。用戶可以根據(jù)自己的分?jǐn)?shù)、所在地區(qū)、所考科目等關(guān)鍵字來檢索相關(guān)信息,也可以借助搜索引擎進(jìn)一步篩選信息。搜索引擎已經(jīng)成為第二大互聯(lián)網(wǎng)應(yīng)用技術(shù)[4]。
該研究目的是實(shí)現(xiàn)高考志愿填報(bào)領(lǐng)域的垂直搜索引擎系統(tǒng),滿足使用者對(duì)高校信息更加精準(zhǔn)的信息檢索需求。具體通過Python爬蟲工具從陽光高考網(wǎng)站爬取所有高校當(dāng)年的招生簡(jiǎn)章,往年錄取分?jǐn)?shù)等數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行清洗并將其導(dǎo)入到Elastic Search中,然后再建立索引,使用SpringBoot和Vue進(jìn)行開發(fā),實(shí)現(xiàn)網(wǎng)站的搭建。主要包括以下模塊:
1) 爬蟲模塊:對(duì)各地考試院、高校官網(wǎng)或者公眾號(hào)進(jìn)行數(shù)據(jù)爬取,對(duì)指定的URL進(jìn)行頁面下載,提取出頁面中的專業(yè)、選科要求、各項(xiàng)分?jǐn)?shù)線、錄取人數(shù),高校所在地和規(guī)模等信息。然后對(duì)獲取到的信息進(jìn)行清洗,將規(guī)范的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫里。
2) 信息檢索模塊:對(duì)數(shù)據(jù)表數(shù)據(jù)創(chuàng)建映射,進(jìn)行中文分詞,建立倒排索引。利用ElasticSearch模糊匹配實(shí)現(xiàn)搜索建議提示,多字段查找搜索功能來支持信息的智能檢索。
3) 用戶搜索模塊:SpringBoot整合了很多優(yōu)秀的框架,對(duì)Spring進(jìn)行了全面的升級(jí)和優(yōu)化,采用“約定優(yōu)于配置”的核心思想,減輕開發(fā)人員的壓力,從而在一定程度上提高開發(fā)效率[5]。該系統(tǒng)使用SpringBoot框架開發(fā)軟件,提供友好的人機(jī)交互頁面,方便考生進(jìn)行智能檢索。該系統(tǒng)提供關(guān)鍵字檢索,比如根據(jù)省份、分?jǐn)?shù)段、排位、高校、專業(yè)、單科成績(jī)等信息檢索,提供分?jǐn)?shù)線區(qū)間檢索,分?jǐn)?shù)線曲線圖查看等功能,滿足考生多項(xiàng)需求,提高查找效率,為志愿填報(bào)提供依據(jù)。
2 需求分析
2.1 系統(tǒng)需求分析
項(xiàng)目中的系統(tǒng)是依據(jù)SpringBoot為核心框架的網(wǎng)站,用戶登錄后可以使用該引擎來搜索需要的信息,該系統(tǒng)可以返回給用戶信息包括院校名稱、院?;拘畔?、專業(yè)名稱、專業(yè)分?jǐn)?shù)區(qū)間和分?jǐn)?shù)排名等信息,搜索的結(jié)果精確準(zhǔn)確。
主要用戶是志愿填報(bào)者。這類人群是該系統(tǒng)主要服務(wù)的人員,使用者希望可以在該網(wǎng)站中獲取高校當(dāng)前的錄取信息和系統(tǒng)推薦的院校專業(yè)。他們會(huì)更加關(guān)注該系統(tǒng)搜索結(jié)果是否準(zhǔn)確、此系統(tǒng)是否能快速響應(yīng)、是否操作簡(jiǎn)單和收費(fèi)合理。
2.2 系統(tǒng)分析
2.2.1 準(zhǔn)確性需求分析
準(zhǔn)確性要求獲得的數(shù)據(jù)是真實(shí)的、有效的。該數(shù)據(jù)清洗也必須是有科學(xué)依據(jù)的,錯(cuò)誤數(shù)據(jù)能夠及時(shí)地處理,保證用戶得到最后結(jié)果是正確的。要求能夠使用合理的篩選規(guī)則,對(duì)爬取的數(shù)據(jù)要進(jìn)行歸類和清除。
2.2.2 實(shí)時(shí)性分析
實(shí)時(shí)性要求此系統(tǒng)的數(shù)據(jù)需要及時(shí)地進(jìn)行更新操作,保證所獲得的數(shù)據(jù)是符合當(dāng)年高考志愿填報(bào)所需的信息,這需要定時(shí)地對(duì)該系統(tǒng)進(jìn)行維護(hù),保證系統(tǒng)能夠第一時(shí)間獲取所需的信息并進(jìn)行數(shù)據(jù)的更換。
2.2.3 實(shí)用性分析
實(shí)用性要求該系統(tǒng)的頁面是簡(jiǎn)潔易操作的。直接可以在瀏覽器上使用該系統(tǒng),無須安裝其他的軟件和插件。系統(tǒng)需要進(jìn)行合理的優(yōu)化,使其具備顏色使用合理、布局符合使用規(guī)范、功能位置一目了然、人機(jī)交互簡(jiǎn)單等特性,使得使用人員更快找到所需內(nèi)容。
2.2.4 高效性分析
高效性主要考驗(yàn)系統(tǒng)的反饋時(shí)間,當(dāng)用戶輸入關(guān)鍵詞時(shí),系統(tǒng)能夠快速地給出反饋,避免用戶長(zhǎng)時(shí)間的等待,提高用戶的使用體驗(yàn),理論上系統(tǒng)的響應(yīng)時(shí)間不宜超過3秒。
2.2.5 隱私性分析
隱私性是當(dāng)前用戶重視的。系統(tǒng)不僅需要防范不法人員對(duì)網(wǎng)站進(jìn)行滲透和攻擊,拒絕來自用戶的非規(guī)范請(qǐng)求,保障系統(tǒng)的安全,而且需要保障用戶的私人信息不被第三者知曉。
3 系統(tǒng)總體設(shè)計(jì)
3.1 系統(tǒng)總體結(jié)構(gòu)
根據(jù)需求分析當(dāng)中的功能需求,系統(tǒng)共有三層結(jié)構(gòu),分別是業(yè)務(wù)層、數(shù)據(jù)層、用戶層。系統(tǒng)總體設(shè)計(jì)使用的架構(gòu)如圖1所示。
用戶表現(xiàn)層包括整個(gè)系統(tǒng)的人機(jī)交互頁面,用戶可以在首頁查看志愿填報(bào)頁面,點(diǎn)擊志愿填報(bào)進(jìn)入志愿填報(bào)頁面。此時(shí)會(huì)有一個(gè)彈窗出現(xiàn),需要填寫用戶的高考信息,包括高考省份、成績(jī)類型、高考科目、高考分?jǐn)?shù)、對(duì)應(yīng)排名等信息,點(diǎn)擊確認(rèn)進(jìn)入志愿填報(bào)頁面,此時(shí)系統(tǒng)左側(cè)會(huì)給出圖表來表示推薦的院校和專業(yè),系統(tǒng)右側(cè)會(huì)給出當(dāng)年的招生計(jì)劃和專業(yè)分。
業(yè)務(wù)邏輯層給出了面向業(yè)務(wù)的服務(wù)接口,主要包含對(duì)高校的搜索、對(duì)專業(yè)的搜索、用戶搜索的關(guān)鍵詞,系統(tǒng)從存儲(chǔ)層獲取用戶搜索的信息,用圖表的方式反饋給用戶。
數(shù)據(jù)存儲(chǔ)層含有數(shù)據(jù)的持久化服務(wù),主要分布為ElasticSearch索引庫和MySQL數(shù)據(jù)庫,爬蟲獲得的信息存儲(chǔ)在進(jìn)行數(shù)據(jù)清洗之后存入這兩部分當(dāng)中,用戶的基本信息和搜索記錄則存儲(chǔ)在MySQL數(shù)據(jù)庫中。
3.2 技術(shù)方案選型
綜合考慮系統(tǒng)的總體結(jié)構(gòu)與系統(tǒng)的落實(shí),該系統(tǒng)選擇使用Meaven工程來創(chuàng)建項(xiàng)目,并且使用主流的SpringBoot+Vue 框架,借助瀏覽器來實(shí)現(xiàn)人機(jī)交互。整個(gè)概念圖如圖2所示。
視圖層主要為用戶提供搜索頁面,整體采用Vue框架來實(shí)現(xiàn),根據(jù)Vue的特性,框架只關(guān)注系統(tǒng)的視圖層,因此就必須要借助基于promise的網(wǎng)絡(luò)請(qǐng)求庫——axios,使用Vue-router去完成頁面跳轉(zhuǎn)工作,Vue用來作狀態(tài)管理在Session中存儲(chǔ)用戶的歷史記錄。
控制層主要使用框架——SpringBoot,根據(jù)業(yè)務(wù)需求,把對(duì)系統(tǒng)當(dāng)中的數(shù)據(jù)庫操作封裝成一個(gè)事務(wù)操作,當(dāng)前端發(fā)出請(qǐng)求時(shí),在Controller中進(jìn)行請(qǐng)求映射并接受參數(shù),調(diào)用相關(guān)的數(shù)據(jù)層來完成操作。
數(shù)據(jù)層使用ElasticSearch 索引庫和MySQL 數(shù)據(jù)庫,將使用Scrapy爬取并清洗好的數(shù)據(jù)導(dǎo)入索引庫當(dāng)中,索引庫當(dāng)中的每個(gè)文檔包括一系列的搜索信息。使用MySQL數(shù)據(jù)庫存儲(chǔ)用戶的歷史記錄,方便管理員收集信息。
3.3 系統(tǒng)工作流程
系統(tǒng)工作大致分為三塊:
1) 數(shù)據(jù)獲?。?) 數(shù)據(jù)處理;3) 實(shí)現(xiàn)信息檢索。
3.4 數(shù)據(jù)庫設(shè)計(jì)
該系統(tǒng)所使用的數(shù)據(jù)庫為MySQL數(shù)據(jù)庫,數(shù)據(jù)庫當(dāng)中共存儲(chǔ)三張表,分別為search_record表、major表、university表。search_record記錄用戶的信息,包括日期、省份、高考科目、高考分?jǐn)?shù)、對(duì)應(yīng)排名、用戶歷史搜索等。major表則表示符合要求的專業(yè);college表示符合要求的大學(xué)。
4 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
本章闡述高考志愿填報(bào)系統(tǒng)當(dāng)中每一個(gè)模塊之間的細(xì)節(jié)和實(shí)現(xiàn)的過程,表示出每個(gè)模塊之間的關(guān)系,具體的設(shè)計(jì)流程。
4.1 爬蟲模塊
爬蟲模塊主要的功能是在陽光高考網(wǎng)站爬取系統(tǒng)所需要的數(shù)據(jù),然后將這些數(shù)據(jù)進(jìn)行清理并進(jìn)行存儲(chǔ)。處理后的數(shù)據(jù)是整個(gè)系統(tǒng)的數(shù)據(jù)源,是這個(gè)系統(tǒng)能夠正確反饋的基石。
網(wǎng)絡(luò)爬蟲技術(shù)是搜索引擎的底層核心,其目的是采用最佳的訪問路線,遍歷整個(gè)互聯(lián)網(wǎng)網(wǎng)頁,將下載的網(wǎng)頁內(nèi)容進(jìn)行網(wǎng)頁結(jié)構(gòu)解析、頁面存儲(chǔ)[6]。本軟件采用爬蟲框架爬取多個(gè)考試院、高校專業(yè)官方網(wǎng)站的高考數(shù)據(jù)并進(jìn)行數(shù)據(jù)的清洗,創(chuàng)建數(shù)據(jù)庫,將數(shù)據(jù)導(dǎo)入搜索引擎,對(duì)數(shù)據(jù)建立索引并搭建搜索系統(tǒng),使用流行的開發(fā)框架進(jìn)行軟件開發(fā),實(shí)現(xiàn)查詢、智能檢索、推薦以及圖表曲線功能。爬蟲模塊包括網(wǎng)頁下載及學(xué)校信息解析、數(shù)據(jù)清洗[7]。
爬蟲進(jìn)行數(shù)據(jù)爬取時(shí),首先要確定一個(gè)最初的URL,以這個(gè)URL作為起點(diǎn)開始獲取頁面里的鏈接信息。爬蟲在進(jìn)行網(wǎng)頁下載的同時(shí)又不斷從下載頁面中提取新的URL,并且放入U(xiǎn)RL隊(duì)列中[8]。
完整的網(wǎng)頁數(shù)據(jù)獲取流程如圖6所示。
4.2 數(shù)據(jù)清洗
數(shù)據(jù)從網(wǎng)頁上爬取出來的結(jié)果是json文件,不符合es搜索引擎的存儲(chǔ)要求,需要對(duì)數(shù)據(jù)進(jìn)行清洗和格式化。
主要解決的是數(shù)據(jù)的格式和編碼問題,一部分的信息經(jīng)過該爬取會(huì)顯示亂碼信息,可以使用空字符串代替。第二個(gè)工具是將json格式處理為bulkapi格式。在數(shù)據(jù)清洗后直接手動(dòng)將數(shù)據(jù)導(dǎo)入到ElasticSearch中,需要保證導(dǎo)入的json文件和官方要求一致。
4.3 信息索引模塊
信息索引模塊發(fā)揮的主要作用是對(duì)爬取的數(shù)據(jù)建立信息索引,主要使用ElasticSearch索引庫。Elas?ticSearch是由Apache基金會(huì)開發(fā)的基于文本的搜索引擎[9]。該模塊主要分為兩部分,一部分是對(duì)爬取的數(shù)據(jù)進(jìn)行分詞,可以給使用者帶來極大的方便。另一部分則是創(chuàng)建索引、建立映射及數(shù)據(jù)存儲(chǔ)。映射就是索引當(dāng)中文檔的類型,這要求要根據(jù)實(shí)際需求建立映射,通過手動(dòng)的方式將爬蟲得到的數(shù)據(jù)導(dǎo)入索引庫當(dāng)中。
4.4 用戶檢索模塊
用戶檢索模塊的功能是為使用者反饋院校信息,這是整個(gè)系統(tǒng)最重要的一部分。在前面的模塊中將獲得的數(shù)據(jù)存儲(chǔ)到索引庫當(dāng)中,下面需要用這些數(shù)據(jù)完成用戶搜索服務(wù)。
4.4.1 院校專業(yè)查詢
專業(yè)查詢主要使用索引庫當(dāng)中關(guān)鍵字進(jìn)行查找,選擇用戶需要的篩選條件,包括報(bào)考省份、成績(jī)類型、高考科目、高考分?jǐn)?shù)、對(duì)應(yīng)排名等,系統(tǒng)會(huì)自動(dòng)地將用戶的查詢結(jié)果顯示到網(wǎng)頁上。
4.4.2 搜索信息可視化
基于現(xiàn)實(shí)情況,團(tuán)隊(duì)將高考志愿填報(bào)與互聯(lián)網(wǎng)大數(shù)據(jù)結(jié)合起來,利用互聯(lián)網(wǎng)高效的信息集合能力和數(shù)據(jù)流通能力,幫助考生在短時(shí)間內(nèi)獲取更多真實(shí)有效的信息。根據(jù)考生的興趣愛好、分?jǐn)?shù),智能推薦能被何種院校和專業(yè)錄取,并智能分析錄取的概率,人性化地將這些信息做成圖表,更清楚地展示高校相關(guān)專業(yè)排名、所屬城市、就業(yè)發(fā)展以及升學(xué)留學(xué)信息,幫助考生快速、準(zhǔn)確地選擇出自己心儀的高校。
5 總結(jié)
所做的工作:進(jìn)行了高考志愿填報(bào)系統(tǒng)的總體設(shè)計(jì),使用了主流的SpringBoot+Vue框架作為系統(tǒng)的主要框架,在上述介紹了涉及的技術(shù),簡(jiǎn)單介紹了數(shù)據(jù)庫的索引庫的相關(guān)信息。
創(chuàng)新點(diǎn):區(qū)別于傳統(tǒng)的高考志愿填報(bào)參考系統(tǒng),該系統(tǒng)對(duì)于考生的分?jǐn)?shù)排位和所屬層次的高等院校的覆蓋更加廣泛,能夠讓考生盡可能不浪費(fèi)分?jǐn)?shù),上更好的大學(xué)。
不足之處:經(jīng)驗(yàn)不足,可在細(xì)節(jié)處理方面仍然有很多需要改進(jìn)的地方,希望能在接下來的項(xiàng)目設(shè)計(jì)和推進(jìn)中不斷完善該系統(tǒng),為更多考生提供便利。