摘要:基于網(wǎng)絡(luò)的銀杏信息整合分析系統(tǒng)旨在讓銀杏研究和普及更加方便快捷,從而帶動對銀杏這一隱藏的寶庫的全民探索。本系統(tǒng)是利用python語言實(shí)現(xiàn)網(wǎng)頁抓取和信息篩選的,可以按照選擇的關(guān)鍵詞在某網(wǎng)站部署爬蟲,從而獲取需要的信息。
關(guān)鍵詞:網(wǎng)絡(luò);銀杏;爬蟲;信息整合
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)34-0087-03
1 概述
基于網(wǎng)絡(luò)的銀杏信息整合分析系統(tǒng)旨在讓銀杏研究和普及更加方便快捷,不僅對專業(yè)林學(xué)人士提供了另外一種更加現(xiàn)代化的研究道路,還對普通大眾了解和普及銀杏知識有較大的影響,從而帶動對銀杏這一隱藏的寶庫的全民探索。網(wǎng)站內(nèi)除了提供基本的銀杏信息以及相關(guān)的增加、刪除、更改和查詢功能外還創(chuàng)新地在網(wǎng)內(nèi)實(shí)現(xiàn)站內(nèi)搜索功能,使得用戶可以直觀地看到全網(wǎng)或指定網(wǎng)站內(nèi)關(guān)于銀杏的全面信息。
2 爬蟲技術(shù)
2.1 爬蟲分類
網(wǎng)絡(luò)爬蟲是一種信息采集的技術(shù),按照實(shí)現(xiàn)的技術(shù)可以分為通用網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲、增量式網(wǎng)絡(luò)爬蟲和深層網(wǎng)絡(luò)爬蟲。
通用網(wǎng)絡(luò)爬蟲也叫作全網(wǎng)爬蟲,適用于搜索范圍較廣的情況。爬行方法又分為深度優(yōu)先和廣度優(yōu)先。
深度優(yōu)先策略是以根網(wǎng)址為開始頁面,依次爬取下一級網(wǎng)頁,直至爬取結(jié)束,再從上一級網(wǎng)頁的其他下級網(wǎng)頁開始爬取,直至根網(wǎng)頁的所有子網(wǎng)頁都被爬取結(jié)束。這種爬取方法會浪費(fèi)爬取時間和空間,只適用于站內(nèi)搜索。
廣度優(yōu)先爬取策略,是從根網(wǎng)頁開始,爬取此頁面上所有有用的鏈接,并存儲于網(wǎng)址集合,然后從網(wǎng)址集合中依次爬取頁面信息,每次爬取前遍歷集合,若已經(jīng)爬取過,則直接丟棄。這種方法爬行深度淺,但范圍廣,內(nèi)存要求低。
以上幾種爬蟲技術(shù)各有優(yōu)缺點(diǎn),具體使用需要按照系統(tǒng)的需求來更改。由于本系統(tǒng)在當(dāng)前階段更注重簡介程度且爬取是否方便,所以使用的是通用網(wǎng)絡(luò)爬蟲技術(shù),此技術(shù)需要在程序中搭建一套框架,按照一定流程來完成對一個網(wǎng)站內(nèi)信息的爬取。
2.2 爬蟲在數(shù)據(jù)分析領(lǐng)域的應(yīng)用
基于爬蟲的銀杏信息整合分析系統(tǒng),大致上是通過爬蟲爬取網(wǎng)絡(luò)上的數(shù)據(jù),再用BeaytifuISoup對數(shù)據(jù)進(jìn)行細(xì)化分析,最后存入后臺并輸出于前端。爬蟲在數(shù)據(jù)分析鄰域,是分析數(shù)據(jù)的來源和基礎(chǔ),而數(shù)據(jù)分析又為爬蟲提供了新的可爬取的源頁面。數(shù)據(jù)采集和數(shù)據(jù)分析相輔相成,合作完成網(wǎng)絡(luò)數(shù)據(jù)的整合于分析。
2.3 爬蟲scrapy框架
Scrapy是一個專門用于實(shí)現(xiàn)爬蟲的框架,內(nèi)部具有對HT-ML和XML源數(shù)據(jù)篩選和處理的功能。它提供了許多過濾器,用于在spider之間實(shí)現(xiàn)共享,且支持多次使用。
Scrapy是一個框架,使用者可以根據(jù)框架的模塊來編寫爬蟲。
1)具有對爬蟲性能和狀態(tài)的檢測工具,尤其在有多個爬蟲并行工作時,可以用來檢測并上報爬蟲的效率、是否成功。
2)提供了shell終端來與用戶交互,自動檢測XPath表達(dá)式,使得用戶實(shí)現(xiàn)爬蟲更加簡單快捷。
3)提供了一系列工具,例如System service、Web service、Telnet終端、Logging,還可以支持Sitemaps爬取。
4)具有緩存的DNS解析器。
2.4 爬蟲BeautifulSoup工具
在抓取到所有頁面信息后,還需要將龐大的信息進(jìn)行細(xì)化和分類,此時就需要BeautifuISoup工具。
Beautiful Soup是python的一個庫,它提供了許多高效的函數(shù),用來篩選和處理對用戶有用的數(shù)據(jù)。Bs4是一個工具箱,處理剛爬取得到的網(wǎng)頁數(shù)據(jù)文檔,從而為用戶提供數(shù)據(jù),它實(shí)現(xiàn)起來比較簡單,所以代碼量還是比較小的。
Beautiful Soup在處理文檔前,首先將輸入的待處理文檔轉(zhuǎn)換為Unicode編碼,再以utf-8編碼轉(zhuǎn)化并輸出處理好的文檔,所以一般情況下,無須開發(fā)人員考慮過多的編碼問題,Beauti-ful Soup可以自動識別編碼方式。
3 開發(fā)語言及軟件
3.1Python語言
Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C(jī)程序設(shè)計語言,是純粹的自由軟件,已經(jīng)廣泛用于web編程和系統(tǒng)事務(wù)處理?!皟?yōu)雅”“明確”“簡單”是Python的設(shè)計概念。Python語言具有較為強(qiáng)大的擴(kuò)展性,可以融人多種語言中,也可以兼容各種語言制作的模塊,只需將用其他語言完成的代碼模塊生成包,在Py-thon中導(dǎo)入該第三方包即可使用。
相對于java、c#、C++等靜態(tài)編程語言,Python抓取網(wǎng)頁更加簡單明了,而相對于shell等其他動態(tài)腳本語言,python的url-lib包具有較為完整的訪問網(wǎng)頁的工具。除此之外,許多的網(wǎng)站都是不允許普通爬蟲的,往往需要一些關(guān)鍵詞段,例如登陸注冊信息,這時就需要模擬用戶的行為,而在Python中提供了Re-quests等第三方包,可以比較容易地實(shí)現(xiàn)網(wǎng)站的爬取。
3.2 開發(fā)軟件PyCharm
PyCharm是一種基于python語言的開發(fā)工具,并附帶有豐富的庫。PyCharm主要功能:
1)代碼自動補(bǔ)全:提供了代碼補(bǔ)全功能,支持代碼折疊和分割窗口的智能化操作,可配置的編輯器,可幫助用戶更快更輕松地完成編程工作。
2)項目代碼導(dǎo)航:可以幫助用戶在一個文件中通過導(dǎo)航進(jìn)入另一個文件中的對應(yīng)函數(shù),從一個方法可以跳至申明處或穿過類的層次。
3)代碼檢測:根據(jù)用戶的輸入自動檢測語法錯誤,包括變量申明、類型、作用域等問題,還包括檢測前推,后退和移動重構(gòu)的功能。
4)支持Django:PyCharm有自帶的css、html和JacaScript編輯器,使得用戶可以更方便地使用Django框架。
5)支持諸多引擎:用戶可以使用多種引擎進(jìn)行css、html和JacaScript文件的調(diào)試,包括360極速、IE、火狐、Google等瀏覽器。
4 系統(tǒng)功能需求分析
系統(tǒng)需求分析是一個系統(tǒng)的開端,它規(guī)定了系統(tǒng)需要完成什么功能,完成至什么程度,如何完成此功能以及需要注意的問題,用戶操作需要哪些細(xì)節(jié)考慮。
基于爬蟲的銀杏信息整合分析系統(tǒng)的客戶功能模塊需要的是一個人性化、操作方便且數(shù)據(jù)質(zhì)量高的網(wǎng)站。此系統(tǒng)要求將網(wǎng)絡(luò)中各大網(wǎng)站的銀杏樹相關(guān)信息提取在個人網(wǎng)頁中,其中兩部分最為重要,一是顯示在頁面上數(shù)據(jù)的質(zhì)量,二是頁面的美化和人性化。按照頁面劃分,系統(tǒng)可分為welcome頁面和主頁面;按照功能模塊劃分,主頁面可分為三個模塊,分別是導(dǎo)航欄模塊、研究專題模塊和銀杏公園模塊。
4.1 welcome頁面功能需求分析
Welcome頁面:作為網(wǎng)站給用戶的第一印象,需要足夠美觀且簡約,并能提供圖片預(yù)覽操作,以及相應(yīng)的圖片切換操作,頁面下方安排一處鏈接,點(diǎn)擊跳轉(zhuǎn)到主頁面,也就是主要信息的放置頁面。如圖1。
4.2 主頁面導(dǎo)航欄功能需求分析
主頁面是整個系統(tǒng)的核心頁面,是主要數(shù)據(jù)的放置處。頁面包含了三個板塊。將主頁分為多個板塊,目的是使整個網(wǎng)站的外觀更加美觀,頁面更加簡潔清楚。
第一版塊為導(dǎo)航欄,分為“首頁”“最新研究”“銀杏圖庫”“下載專區(qū)”“關(guān)于網(wǎng)站”五個欄目。
點(diǎn)擊“首頁”按鈕,將會跳轉(zhuǎn)至welcome頁面。
點(diǎn)擊“最新研究”按鈕,將會在主頁顯示欄展示爬取的最新研究信息。
點(diǎn)擊“銀杏圖庫”按鈕,將會在主頁顯示欄展示爬取的銀杏相關(guān)圖片,帶有切換圖片功能和下載圖片功能。
點(diǎn)擊“下載專區(qū)”按鈕,將會提供“最新研究下載”,“最新報道下載”,“圖片下載”和“研究專題下載”四個圖形按鈕,用戶點(diǎn)擊則下載對應(yīng)的文件至本地。
點(diǎn)擊“關(guān)于網(wǎng)站”按鈕,則顯示一個靜態(tài)頁面,包含網(wǎng)站的來源,名稱,作者,指導(dǎo)和聯(lián)系方式。
第二板塊是左側(cè)的兩個模塊,“學(xué)術(shù)動態(tài)”和“銀杏公園”。
第三板塊是顯示板塊,布置于網(wǎng)頁的中間,用于根據(jù)用戶操作展示相關(guān)的信息。
如圖2所示:
4.3 學(xué)術(shù)動態(tài)頁面功能需求分析
該頁面是通過主頁面中學(xué)術(shù)動態(tài)欄所選方向決定的,總共包含了五個方向,分別是“銀杏葉提取物專題”“銀杏數(shù)品類專題”“銀杏樹價值研究專題”“銀杏樹授粉實(shí)驗(yàn)專題”和“最新媒體報道專題”。這些信息均是從網(wǎng)絡(luò)中爬取得到,并經(jīng)過篩選后整合至頁面中。該板塊作用是搜索相關(guān)網(wǎng)站集,將銀杏樹相關(guān)研究方向的最新發(fā)展動態(tài)集合于“銀杏圖書館”網(wǎng)站,使得用戶可以在本網(wǎng)站內(nèi)了解到最新的研究動態(tài)。
4.4 銀杏公園頁面功能需求分析
銀杏公園頁面也是由主頁面中相關(guān)板塊選項決定的,用于靜態(tài)展示全國幾個著名的銀杏樹旅游景點(diǎn)的相關(guān)信息,包含圖片、簡介和旅行社鏈接。簡介包括景點(diǎn)地址和具體介紹。用戶可以在此網(wǎng)站點(diǎn)擊鏈接直接進(jìn)入旅行社的對應(yīng)旅行線路信息,這樣可以拓展網(wǎng)站的范圍,使得覆蓋面更加廣泛,網(wǎng)站的延展性更強(qiáng)。
4.5 信息檢索功能需求分析
信息檢索功能設(shè)置在信息展示的相關(guān)頁面上,若不使用此功能,即不在文本框中輸入任何內(nèi)容,則會在頁面上顯示所有的完整數(shù)據(jù)。若用戶輸入關(guān)鍵詞,則系統(tǒng)按關(guān)鍵詞搜索文件中所有文章的標(biāo)題,若含有關(guān)鍵詞,則符合篩選條件,最后將對應(yīng)的文章集合輸出到頁面上,這樣將會大大降低用戶自己搜尋的精力,使得用戶操作更簡單,更舒適。如圖3所示。
4.6 網(wǎng)站分享功能需求分析
現(xiàn)如今眾多的網(wǎng)站都配備有網(wǎng)站分享功能,為了更加現(xiàn)代化、跟上潮流并提高用戶體驗(yàn),使得網(wǎng)站更加人性化,特添加了網(wǎng)站分享功能。
按鈕組共包含了三個圖片按鈕,分別為微博、微信和QQ分享鏈接。點(diǎn)擊微博或QQ按鈕,會跳出微博和QQ空間自帶的發(fā)布頁面,然而微信并沒有這樣的功能頁面,且其為暫時用戶最多的軟件之一,所以還需要設(shè)置微信分享功能:點(diǎn)擊微信按鈕后,會跳出微信網(wǎng)頁版的登錄界面,即掃二維碼登錄微信,登錄后由用戶自行分享。
5 爬取網(wǎng)站的考量
基于爬蟲的銀杏信息整合分析系統(tǒng),最重要的部分便是爬取的信息源是否具有足夠高的專業(yè)度、準(zhǔn)確度。在選擇爬取網(wǎng)站時,需要考慮到如下幾個因素:
權(quán)威性:一個系統(tǒng)的信息源是否可靠,決定了該系統(tǒng)的發(fā)展和命運(yùn),不純凈、不準(zhǔn)確,甚至是錯誤的信息源會影響一個系統(tǒng)呈現(xiàn)給用戶的數(shù)據(jù)精度。
針對性:一個數(shù)據(jù)源若是缺乏針對性,就會造成數(shù)據(jù)模糊,精度不足,從而呈現(xiàn)于自己系統(tǒng)上的數(shù)據(jù)文不對題,同樣造成用戶體驗(yàn)差。
格式清晰:分為數(shù)據(jù)格式和HTML網(wǎng)頁格式。網(wǎng)站的數(shù)據(jù)格式指文字內(nèi)容中是否摻雜一些無用的空格、亂碼、標(biāo)點(diǎn)符號,是否有正常的分段。HTML網(wǎng)頁格式指的是爬取對象的HTML格式網(wǎng)頁是否規(guī)范,是否有足夠的標(biāo)識來標(biāo)記所需要爬取的標(biāo)簽,
是否反爬蟲:爬取一個網(wǎng)站的前提是該網(wǎng)站是否允許爬蟲爬取網(wǎng)頁內(nèi)容。若存在反爬蟲程序或是防火墻之類的阻撓,則此網(wǎng)站不可選為“銀杏樹圖書館”爬取對象。
數(shù)據(jù)量:是指一個待爬取網(wǎng)站的相關(guān)數(shù)據(jù)是否完善和足夠,當(dāng)一個網(wǎng)站的數(shù)據(jù)量太小時,也失去了爬取的意義。
重復(fù)度:若是該待爬取網(wǎng)站有較多的內(nèi)容是重復(fù)于一爬取網(wǎng)站的,則該頁面也是不宜爬取的。
綜合考量,本系統(tǒng)爬取了如下幾個網(wǎng)站:
百度百科網(wǎng)、中國林業(yè)網(wǎng)一銀杏網(wǎng)、中國銀杏網(wǎng)(非官方網(wǎng)站)、中國植物志、全景網(wǎng)、知乎網(wǎng)。
6 總結(jié)
本系統(tǒng)旨在將網(wǎng)絡(luò)中錯綜繁雜的銀杏樹信息有條理的顯示在網(wǎng)頁中,供用戶瀏覽和下載,之后會增添數(shù)據(jù)量,爬取更多網(wǎng)站的信息,并添加更多方便用戶的功能。
參考文獻(xiàn):
[1]曹福亮.銀杏[M].北京:中國林業(yè)出版社,2007.
[2]胡松濤.PYTHON網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2016:13-18.
[3]范傳輝.Python爬蟲開發(fā)與項目實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2017:47-76.
[4]埃里克·馬瑟斯.Python編程從入門到實(shí)踐[M].北京:人民郵電出版社,2016:123 -126.
【通聯(lián)編輯:王力】
收稿日期:2019-09-16
作者簡介:苗哲(1971-),男,江蘇南京人,南京林業(yè)大學(xué)信息學(xué)院,高級實(shí)驗(yàn)師,碩士,主要研究方向?yàn)橛嬎銠C(jī)應(yīng)用