999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于JAVA爬蟲的網(wǎng)絡(luò)票務(wù)查詢系統(tǒng)

2018-03-04 07:03:20葉長青宋胡楊
電腦知識與技術(shù) 2018年36期

葉長青 宋胡楊

摘要:隨著人類科技水平的不斷發(fā)展,計算機和網(wǎng)絡(luò)的使用也變得十分廣泛,同時隨著人們的需求日益增加,人們已經(jīng)開始意識到信息的重要性,而在當下這個網(wǎng)絡(luò)時代,數(shù)據(jù)信息大量進入互聯(lián)網(wǎng),信息的網(wǎng)絡(luò)化使得人們對于信息的收集和使用變得更加便捷,在這樣的背景下,誕生了網(wǎng)絡(luò)爬蟲技術(shù)。網(wǎng)絡(luò)爬蟲(web spider)是可以按照設(shè)定的規(guī)則對網(wǎng)絡(luò)信息進行抓取的程序或者腳本,是搜索引擎的重要組成部分。該文使用JAVA語言通過對網(wǎng)上的票務(wù)信息的抓取來獲取火車票以及機票的數(shù)據(jù),進而通過springMVC框架對數(shù)據(jù)展示與邏輯進行整合。使用此票務(wù)查詢系統(tǒng),可以實時查詢票務(wù)信息以及更加方便的對數(shù)據(jù)進行統(tǒng)計匯總。

關(guān)鍵詞: JAVA;網(wǎng)絡(luò)爬蟲;數(shù)據(jù)可視化

中圖分類號:TP311.5? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2018)36-0041-02

1 國內(nèi)外網(wǎng)絡(luò)爬蟲研究現(xiàn)狀

CNNIC一年兩次發(fā)布的《中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況統(tǒng)計報告》中進行了對中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況的全面反映和分析,以權(quán)威性被世人所知。在該報告中可以看出,一方面在信息時代,互聯(lián)網(wǎng)上面充斥著異常龐大的數(shù)據(jù)信息,另一方面,通過人工操作的方式在龐大的互聯(lián)網(wǎng)上想要找到自己需要的信息變得越來越困難。

自從2011年起,網(wǎng)絡(luò)爬蟲技術(shù)開始漸漸流行起來,逐步地被人們所重視,近幾年更是成為最炙手可熱的技術(shù)之一。爬蟲的開源框架也在不斷增加,使得爬蟲軟件的開發(fā)門檻變得越來越低,人們可以利用爬蟲來更加方便地獲取所需要的信息。

2 常用的網(wǎng)絡(luò)爬蟲技術(shù)與框架

搜索引擎是網(wǎng)絡(luò)爬蟲的一大重要應(yīng)用,主要用于輔助收集用戶互聯(lián)網(wǎng)上的信息。本文所使用的原理與搜索引擎的主要流程大致相似,只是通過縮小了數(shù)據(jù)的來源來簡化搜索引擎的過程,并且可以使得服務(wù)器負載要求得到降低,以實現(xiàn)可以在個人電腦中進行爬蟲程序的運行。

目前大部分網(wǎng)絡(luò)爬蟲的框架基本都是基于java或python語言的。如在python語言基礎(chǔ)上進行開發(fā)的scrapy框架、pyspider框架等,基于java的Nutch、WebMagic、HttpClient、SpiderMan、Crawler4j、WebController。基于框架的java爬蟲可以十分簡便的對網(wǎng)絡(luò)的數(shù)據(jù)進行爬取。為了對爬蟲底層原理進行更加深入的了解,本文不使用現(xiàn)有的爬蟲框架,二十使用原生java語言中的net包實現(xiàn)對網(wǎng)絡(luò)信息的抓取。

3 需求分析

3.1 可行性研究分析

票務(wù)查詢系統(tǒng)所需要的數(shù)據(jù)通過編寫網(wǎng)絡(luò)爬蟲程序來實現(xiàn)定向抓取,通過對數(shù)據(jù)的過濾、分析以及存儲來得到系統(tǒng)所需的數(shù)據(jù)。數(shù)據(jù)的可視化模塊通過jsp頁面進行展示,后臺服務(wù)器采用tomcat+SpringMVC的技術(shù),使用開源的MySQL進行數(shù)據(jù)的存儲,這些技術(shù)都是業(yè)界成熟多年的技術(shù),完全可以滿足本項目的要求。

通過對網(wǎng)絡(luò)上眾多的票務(wù)平臺進行的調(diào)查,可以發(fā)現(xiàn)票務(wù)查詢的請求以及返回的數(shù)據(jù)是具有一定規(guī)律的,發(fā)送的http消息頭的參數(shù)具有固定的名稱和種類,返回的http消息體也是具有固定結(jié)構(gòu)的json字符串,這便讓我們對票務(wù)數(shù)據(jù)的解析成為可能。

3.2 需求分析

3.2.1 在線查詢

此功能是本系統(tǒng)的主要功能,需要實現(xiàn)對查詢條件的設(shè)置與檢查、對票務(wù)數(shù)據(jù)的收集,并將數(shù)據(jù)傳輸至視圖頁面進行展示。由于在線查詢需要使用網(wǎng)絡(luò)帶寬,所以需要對此功能進行限制,用戶登錄后才可使用在線查詢系統(tǒng)。

3.2.2 離線查詢

此功能為使用本地查詢代替占用網(wǎng)絡(luò)進行的在線查詢,通過頁面收集查詢條件并通過本地數(shù)據(jù)庫對符合查詢條件的數(shù)據(jù)返回至頁面進行展示,作為在線的查詢功能的補充。本地數(shù)據(jù)庫的數(shù)據(jù)需要定時更新,通過設(shè)置定時器來完成該數(shù)據(jù)更新。

3.2.3 用戶注冊與登錄/注銷

需要用戶登錄才可使用在線查詢功能,在未登錄的情況下首先需要用戶注冊。系統(tǒng)應(yīng)記錄每一個用戶的個人信息。管理員使用單獨的模塊與登錄界面。

3.2.4 管理系統(tǒng)

管理員登錄后臺管理系統(tǒng)后,可對用戶賬戶信息進行管理,以及實現(xiàn)數(shù)據(jù)更新、制定和修改定時數(shù)據(jù)更新的計劃等。管理員通過專門的頁面進入后臺管理系統(tǒng)。

4 系統(tǒng)設(shè)計與實現(xiàn)

4.1 業(yè)務(wù)模塊與流程

本文使用MVC(Model/View/Controller)模式對票務(wù)系統(tǒng)進行構(gòu)建,首先,票務(wù)查詢系統(tǒng)的所需要的數(shù)據(jù)是通過爬蟲抓取,由于票務(wù)數(shù)據(jù)的實時性,所以對票務(wù)數(shù)據(jù)的更新不能間隔過久,但是由于數(shù)據(jù)量較大,也不能過于頻繁地對所有的票務(wù)數(shù)據(jù)進行更新,于是將用戶分為普通用戶和管理員用戶,將數(shù)據(jù)更新操作限定為只有管理員可以進行,以此來避免普通用戶誤操作引起的服務(wù)器占用過多的問題。

通過上述總結(jié)以及前面對需求的描述可得到結(jié)構(gòu)圖與流程圖如下(圖1)。根據(jù)此業(yè)務(wù)流程圖進行對系統(tǒng)各個模塊的設(shè)計與開發(fā)。

4.2 數(shù)據(jù)庫設(shè)計

在本系統(tǒng)中,涉及的數(shù)據(jù)面總共分為三個部分:用戶、車站、車票,系統(tǒng)數(shù)據(jù)庫ER圖構(gòu)成如下圖(圖2)

5 系統(tǒng)實現(xiàn)

系統(tǒng)遵循MVC模式設(shè)計,系統(tǒng)的文件結(jié)構(gòu)如下:Annotation為聲明用于忽略dao層的注解,constants存儲一些程序內(nèi)部使用的固定值便于修改,ctrl、dao、model、service為MVC模式的各個模塊,spider內(nèi)含有用于獲取數(shù)據(jù)的爬蟲,utils為一些程序中會用到的工具類的整合。

5.1 用戶模塊

通過數(shù)據(jù)庫設(shè)計對應(yīng)用戶的類user來存放用戶數(shù)據(jù)。并依據(jù)Spring框架分別創(chuàng)建MainController、MainService、MainDao作為用戶登錄控制器。MainMapper作為用戶數(shù)據(jù)庫sql操作管理xml。前端頁面通過AngularJS綁定獲取輸入框數(shù)據(jù)并通過jQuery.post向服務(wù)器發(fā)起請求,請求鏈接頭部為${pageContext.request.contextPath }獲取服務(wù)器頭部地址,尾部通過注解@RequestMapping在MainController設(shè)置,并將username與userpwd傳入MainController,調(diào)用MainService驗證登錄,通過調(diào)用MainDao接口來調(diào)取對應(yīng)MainMapper中的方法查詢數(shù)據(jù)庫中的用戶信息并將信息存入user類。如果登錄成功則檢查用戶權(quán)限是否為管理員,如果是,直接轉(zhuǎn)發(fā)至管理員頁面,如果不是則將登錄用戶id存入session并進入查詢頁面。

5.2 數(shù)據(jù)獲取模塊

數(shù)據(jù)獲取模塊為本系統(tǒng)的核心模塊,通過發(fā)送http請求來實現(xiàn)獲取本系統(tǒng)所需要的數(shù)據(jù),通過分析對方返回的數(shù)據(jù)格式的分析,例如:“@bjb|北京北|VAP|beijingbei|bjb|0@bjd|北京東|BOP|beijingdong|bjd|1@”,發(fā)現(xiàn),數(shù)據(jù)之間以“@”進行分割,通過服務(wù)器端獲取數(shù)據(jù)并將數(shù)據(jù)進行分割存儲可以得到車站的信息。通過管理員頁面的導(dǎo)入操作向AdminController中insertStation()中@RequestMapping設(shè)置的地址發(fā)起請求,執(zhí)行AdminService中insertStation()函數(shù),在AdminService中調(diào)用TrainSpider中g(shù)etStationData()來獲取車站列表并將車站表通過調(diào)用AdminDao接口映射的AdminMapper中的對應(yīng)方法存入數(shù)據(jù)庫中。此操作只需在系統(tǒng)部署時進行一次即可。

有了車站的信息便可以進行對獲取車票程序的編寫,首先先對車票查詢的請求url進行分析,可以得出http消息體的結(jié)構(gòu),向此url發(fā)送請求便可以獲得查詢的車票的全部信息,再通過對信息的分析和拆分便可以將信息存入對應(yīng)的java類再在程序中進行操作便構(gòu)成了車票的爬蟲。通過管理員頁面的導(dǎo)入車票信息來導(dǎo)入從今日起未來七日的車票信息。此操作向AdminController中insertTrain()中@RequestMapping設(shè)置的地址發(fā)起請求,執(zhí)行AdminService中insertTrain()函數(shù),在此函數(shù)中AdminService會首先通過調(diào)用TrainSpider中g(shù)etStationData()來獲取車站列表,根據(jù)車站列表遍歷獲取需要查詢的所有車票查詢條件并調(diào)用TrainSpider中g(shù)etTrainData()獲取車票信息表并通過調(diào)用AdminDao接口映射的AdminMapper中的對應(yīng)方法存入數(shù)據(jù)庫中。為保證數(shù)據(jù)唯一性,導(dǎo)入前會刪除掉數(shù)據(jù)庫中現(xiàn)有車票數(shù)據(jù)。

查詢時通過對session中是否存有用戶id判斷是否登錄,如有登錄則進行在線查詢,沒有登錄則進行離線查詢。在線查詢直接使用TrainSpider中g(shù)etTrainData()獲取車票信息。離線查詢則調(diào)用SearchController到SearchService到SearchDao中獲取數(shù)據(jù)庫中對應(yīng)查詢條件的數(shù)據(jù)。查詢需要使用數(shù)據(jù)庫中對應(yīng)的車站信息,所以還需要從SearchDao中獲取車站信息來進行輔助。

6 小結(jié)

在互聯(lián)網(wǎng)的飛速發(fā)展下,數(shù)據(jù)在生活之中所扮演的角色也變得十分重要,爬蟲系統(tǒng)也逐漸成為數(shù)據(jù)獲取的主要方式,通過本文所實現(xiàn)的票務(wù)查詢系統(tǒng)可以對爬蟲系統(tǒng)進行一個初步的了解。

本文主要介紹了利用java爬蟲技術(shù)的票務(wù)查詢系統(tǒng)的開發(fā),從需求分析、相關(guān)技術(shù)分析、框架搭建、具體設(shè)計等幾個方面進行了介紹,并且對使用的技術(shù)進行了詳細的分析與解釋。本次開發(fā)有以下幾個技術(shù)要點:1) 對請求的分析較為復(fù)雜,本系統(tǒng)中使用的不僅是簡單的http操作,在查詢時使用的車站代碼也需要通過爬蟲獲取,獲取后才得到車站中文對應(yīng)名稱。

2) 對獲取的數(shù)據(jù)解析較為復(fù)雜,系統(tǒng)通過請求獲取到的票務(wù)數(shù)據(jù)為按照某種格式存儲的數(shù)據(jù),需要對數(shù)據(jù)進行多次不同條件與結(jié)果的查詢來對數(shù)據(jù)格式進行分析,數(shù)據(jù)量較大所以數(shù)據(jù)格式分析工作量較大。

3) 對于網(wǎng)絡(luò)錯誤返回碼對應(yīng)頁面的響應(yīng),由于爬蟲系統(tǒng)需要使用互聯(lián)網(wǎng),難免遇到網(wǎng)絡(luò)堵塞等問題,需要針對網(wǎng)絡(luò)可能發(fā)生的多種問題進行分析并編寫對應(yīng)的響應(yīng)。

本次開發(fā)的票務(wù)查詢系統(tǒng)仍然存在著些許不足之處,比如在多用戶高并發(fā)的情況下的快速響應(yīng)方面還需要做進一步的優(yōu)化,但在用戶量不是特別大的情況下,已經(jīng)可以實現(xiàn)對票務(wù)信息的在線和離線查詢,業(yè)務(wù)的框架已經(jīng)建立起來了,可以作為此類問題的一個解決方案。

參考文獻:

[1] 劉晶晶. 面向微博的網(wǎng)絡(luò)爬蟲研究與實現(xiàn)[D]. 上海: 復(fù)旦大學(xué), 2012.

[2] 中國互聯(lián)網(wǎng)絡(luò)信息中心. 第32次中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況統(tǒng)計報告[J]. 互聯(lián)網(wǎng)天地, 2013(10):74-91.

[3] 鄭豪, 何彥雨. 基于Java平臺的分布式網(wǎng)絡(luò)爬蟲系統(tǒng)研究[J]. 北京. 科技創(chuàng)新與應(yīng)用, 2017(1):112-112.

[4] 李博文. 基于Java的搜索引擎的設(shè)計與實現(xiàn)[D]. 長春: 吉林大學(xué), 2016.

[5] 楊青松. 爬蟲技術(shù)在互聯(lián)網(wǎng)領(lǐng)域的應(yīng)用探索[J]. 電腦知識與技術(shù), 2016, 12(15):62-64.

[6] 羅剛. 自己動手寫網(wǎng)絡(luò)爬蟲[M]. 北京: 清華大學(xué)出版社, 2016.

[7] 馬原, 沈煒, 賈宇波. AngularJS框架的搜索引擎優(yōu)化策略與實現(xiàn)[J]. 工業(yè)控制計算機, 2017, 30(4):113-114.

[8] 吳向陽, 陳萬烤, 張禎,等. 面向訂票服務(wù)器端爬蟲的可視檢測方法研究[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報, 2018(1).

[9] 鄭豪, 何彥雨. 基于Java平臺的分布式網(wǎng)絡(luò)爬蟲系統(tǒng)研究[J]. 科技創(chuàng)新與應(yīng)用, 2017(1):112-112.

[10] 董博, 李翀, 劉學(xué)敏,等. 基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng)[J]. 計算機系統(tǒng)應(yīng)用, 2017, 26(10):53-60.

[11] 朱莉娜, 李澤平. 網(wǎng)絡(luò)爬蟲技術(shù)的研究與實現(xiàn)[J]. 科學(xué)技術(shù)創(chuàng)新, 2017(10):166-166.

[通聯(lián)編輯:代影]

主站蜘蛛池模板: 国产91特黄特色A级毛片| 日韩无码白| 青草娱乐极品免费视频| 一级毛片网| 欧美日韩在线亚洲国产人| 欧美亚洲第一页| 91免费国产高清观看| 国产精品永久免费嫩草研究院| 啊嗯不日本网站| 国产浮力第一页永久地址| 亚洲无码高清一区二区| 小13箩利洗澡无码视频免费网站| 日本爱爱精品一区二区| 欧美不卡二区| 亚洲欧美精品一中文字幕| 精品国产成人国产在线| 亚洲男人天堂久久| 亚洲天堂网站在线| 日韩精品无码免费专网站| 一个色综合久久| 极品性荡少妇一区二区色欲| 伊人久久福利中文字幕| 色综合五月婷婷| aaa国产一级毛片| 免费观看精品视频999| 青青操视频在线| 日韩午夜片| 亚洲色图欧美| 亚洲欧洲日韩综合色天使| 国产白浆视频| 国产亚洲精品自在久久不卡| 99热这里只有免费国产精品| 精品久久久久无码| 色综合五月| 99福利视频导航| AV天堂资源福利在线观看| 中文字幕在线日本| 日韩精品久久无码中文字幕色欲| 国产一区二区三区在线观看免费| 亚洲综合精品第一页| 欧美在线观看不卡| 青草娱乐极品免费视频| 久久综合伊人77777| 国产精品福利导航| 91国内外精品自在线播放| 在线视频一区二区三区不卡| 亚洲人成网址| 国产精品亚欧美一区二区| 精品日韩亚洲欧美高清a| 中国国产高清免费AV片| 18禁高潮出水呻吟娇喘蜜芽| 中文字幕 日韩 欧美| 三级欧美在线| 狠狠久久综合伊人不卡| 四虎影院国产| 久久精品中文字幕少妇| 欧美日韩亚洲国产| 毛片免费高清免费| 色偷偷一区二区三区| 91视频99| 午夜精品福利影院| 91精品专区国产盗摄| 欧美日本在线| 国产白浆在线| 尤物成AV人片在线观看| 色丁丁毛片在线观看| 91亚洲精品国产自在现线| 欧美在线一级片| 亚洲动漫h| 国产精品网曝门免费视频| 欧美日韩在线观看一区二区三区| 欧美亚洲一二三区| 青青草原国产av福利网站| 欧美日韩成人| a毛片免费观看| 亚洲精品男人天堂| 精品久久久久久久久久久| 亚洲欧美日韩另类| 国产一级片网址| 国产午夜福利片在线观看| 亚洲视频免| 国产精品永久免费嫩草研究院|