摘? 要:為解決傳統(tǒng)網(wǎng)絡(luò)目錄更新程序速率慢的問題,文章設(shè)計(jì)了基于Python爬蟲技術(shù)的網(wǎng)絡(luò)目錄更新程序,運(yùn)用GET方式自動(dòng)解析預(yù)設(shè)網(wǎng)絡(luò)目錄參數(shù),刪除重復(fù)網(wǎng)絡(luò)目錄,轉(zhuǎn)化最新得到的網(wǎng)絡(luò)目錄為EQ3格式,完成網(wǎng)絡(luò)目錄更新,實(shí)現(xiàn)EQ3網(wǎng)絡(luò)目錄格式更新程序的設(shè)計(jì)。通過(guò)PyQt編寫程序界面得出結(jié)論:該程序更新網(wǎng)絡(luò)目錄平均耗時(shí)為1.568 s,對(duì)照組為4.896 s,該程序更新網(wǎng)絡(luò)目錄平均耗時(shí)低于對(duì)照組,更新速率更快,可以解決傳統(tǒng)網(wǎng)絡(luò)目錄更新程序速率慢的問題。
關(guān)鍵詞:Python爬蟲技術(shù);網(wǎng)絡(luò)目錄;更新程序;更新速率
中圖分類號(hào):TP311.1;TP393.092? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)18-0020-03
Abstract:In order to solve the problem of slow speed of traditional network directory update program,a network directory update program design based on Python crawler technology is carried out. Use the GET method to automatically parse the preset network directory parameters,delete duplicate network directories,convert the latest network directory to EQ3 format,complete the network directory update,and realize the EQ3 network directory format update program design. Through the programming interface of PyQt,it is concluded that the average time required to update the network directory of the design program is 1.568 s,and the control group is 4.896 s. The average time required to update the network directory of the design program is lower than that of the control group,and the update rate is faster,which can solve the traditional network problem of slow catalog update process.
Keywords:Python crawler technology;network directory;update program;update rate
0? 引? 言
網(wǎng)絡(luò)目錄作為網(wǎng)絡(luò)的核心組成部分,能夠?qū)⒕W(wǎng)絡(luò)中的信息通過(guò)目錄的形式集中展示,使用戶能夠?qū)W(wǎng)絡(luò)中包含的信息一目了然。由于網(wǎng)絡(luò)目錄對(duì)時(shí)效性有很高的要求,網(wǎng)絡(luò)目錄必須隨著網(wǎng)絡(luò)信息內(nèi)容的變更及時(shí)更新,避免出現(xiàn)目錄與實(shí)際內(nèi)容不符的現(xiàn)象。因此,網(wǎng)絡(luò)目錄更新程序應(yīng)勢(shì)而生。以往的網(wǎng)絡(luò)目錄更新程序在應(yīng)用過(guò)程中存在耗時(shí)長(zhǎng)的缺點(diǎn),無(wú)法快速處理格式多樣的網(wǎng)絡(luò)信息數(shù)據(jù)。Python爬蟲技術(shù)作為能夠自動(dòng)捕捉網(wǎng)絡(luò)信息的程序,在網(wǎng)絡(luò)信息獲取方面具有很大的優(yōu)勢(shì)[1]。隨著Python爬蟲技術(shù)的逐步成熟,其已經(jīng)被應(yīng)用到多個(gè)領(lǐng)域中,因此也可以將Python爬蟲技術(shù)引進(jìn)到網(wǎng)絡(luò)目錄更新程序設(shè)計(jì)中。本人在校期間曾有幸參與過(guò)該項(xiàng)目的實(shí)驗(yàn),希望能夠通過(guò)Python爬蟲技術(shù)的高效信息獲取功能,從根本上提高網(wǎng)絡(luò)目錄更新速率。
1? Python爬蟲技術(shù)
Python爬蟲又稱網(wǎng)頁(yè)機(jī)器人,能夠根據(jù)用戶在計(jì)算機(jī)上登錄網(wǎng)頁(yè)的記錄,找尋對(duì)應(yīng)網(wǎng)頁(yè)的鏈接,可近似地看作一種網(wǎng)頁(yè)追蹤引擎[2,3]。網(wǎng)頁(yè)機(jī)器人結(jié)合網(wǎng)絡(luò)信息之間的內(nèi)在聯(lián)系,基于互聯(lián)網(wǎng)進(jìn)行頁(yè)面的檢索;同時(shí)利用爬蟲指定程序,沿著聯(lián)網(wǎng)的頁(yè)面的資源定位符爬到其他頁(yè)面,并重復(fù)這個(gè)過(guò)程,提取頁(yè)面中重要的數(shù)據(jù)信息,依照相關(guān)算法對(duì)收集的數(shù)據(jù)進(jìn)行計(jì)算,分析網(wǎng)絡(luò)中關(guān)鍵詞與鏈接之間的關(guān)聯(lián)程度[4]。Python爬蟲技術(shù)能夠通過(guò)其獨(dú)有的Beautiful Soup精準(zhǔn)解讀HTML文件,從中提取出有價(jià)值的關(guān)鍵信息。
2? 基于Python爬蟲技術(shù)的網(wǎng)絡(luò)目錄更新程序
基于Python爬蟲技術(shù)設(shè)計(jì)的網(wǎng)絡(luò)目錄更新程序整體流程圖如圖1所示。
結(jié)合圖1所示,下文將針對(duì)圖中的3點(diǎn)主要流程進(jìn)行詳細(xì)設(shè)計(jì)。
2.1? 自動(dòng)下載網(wǎng)絡(luò)目錄
在網(wǎng)絡(luò)目錄更新程序設(shè)計(jì)過(guò)程中,首先預(yù)設(shè)網(wǎng)絡(luò)目錄下載參數(shù),其中包括下載路徑、數(shù)據(jù)類型以及目錄類型等。之后登錄網(wǎng)絡(luò),運(yùn)用Python爬蟲技術(shù)中的調(diào)度模塊,分別為網(wǎng)絡(luò)域名子模塊、源代碼下載子模塊及網(wǎng)頁(yè)鏈接提純子模塊,通過(guò)三個(gè)模塊的相輔相成,自動(dòng)下載網(wǎng)絡(luò)目錄[5]。具體工作流程如圖2所示。
圖2為Python爬蟲調(diào)度模塊的工作流程,初始化條件下的UML控制模塊只有一個(gè)網(wǎng)絡(luò)爬蟲進(jìn)入端口,此時(shí)可采用下載源代碼子模塊的方式對(duì)網(wǎng)頁(yè)中源代碼進(jìn)行下載,結(jié)合網(wǎng)頁(yè)中的對(duì)應(yīng)鏈接對(duì)網(wǎng)頁(yè)中關(guān)鍵字進(jìn)行有效提取,并將提取后的鏈接、關(guān)鍵字放入U(xiǎn)ML控制面板中分析數(shù)據(jù)?;赑ython爬蟲技術(shù)中的GET方式將自動(dòng)解析預(yù)設(shè)網(wǎng)絡(luò)目錄參數(shù),此過(guò)程所需的程序代碼如圖3所示。
按照?qǐng)D3所示代碼,即可自動(dòng)解析網(wǎng)絡(luò)目錄,并將下載后的網(wǎng)絡(luò)目錄格式參數(shù)設(shè)置為通用格式文本,為下文操作提供方便。
2.2? 重復(fù)網(wǎng)絡(luò)目錄刪除
在獲取下載的網(wǎng)絡(luò)目錄后,利用Python爬蟲技術(shù)的URL管理器防止重復(fù)抓取URL和循環(huán)抓取URL,并刪除重復(fù)網(wǎng)絡(luò)目錄[6]?;赑ython爬蟲技術(shù)的URL網(wǎng)絡(luò)目錄屬性表如表1所示。
如表1所示,通過(guò)對(duì)被檢測(cè)網(wǎng)頁(yè)的具體描述實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲對(duì)網(wǎng)頁(yè)的獲取,同時(shí)分析網(wǎng)頁(yè)中是否存在重復(fù)信息內(nèi)容,避免更新網(wǎng)絡(luò)目錄時(shí)出現(xiàn)重復(fù)目錄。利用Python爬蟲技術(shù),將網(wǎng)頁(yè)轉(zhuǎn)換成一個(gè)字符串,能夠有效解決文檔復(fù)雜的問題,降低程序運(yùn)行所需耗時(shí)。
2.3? EQ3網(wǎng)絡(luò)目錄格式更新
刪除重復(fù)網(wǎng)絡(luò)目錄后,將最新得到的網(wǎng)絡(luò)目錄轉(zhuǎn)為EQ3格式,更新EQ3網(wǎng)絡(luò)目錄格式[7]。EQ3網(wǎng)絡(luò)目錄格式具備信息描述精度高以及數(shù)據(jù)冗余值低的優(yōu)點(diǎn),能夠滿足網(wǎng)絡(luò)目錄對(duì)信息高度概括的需求[8]。選中所需更新的網(wǎng)絡(luò)目錄類型,點(diǎn)擊Exit即可實(shí)現(xiàn)網(wǎng)絡(luò)目錄更新[9]。
3? 應(yīng)用實(shí)例
3.1? 實(shí)驗(yàn)準(zhǔn)備
本次應(yīng)用實(shí)例選取某網(wǎng)絡(luò)目錄進(jìn)行,程序可視化界面通過(guò)PyQt編寫。實(shí)驗(yàn)操作系統(tǒng)為Windows XP/2000/2003/7/Vista,硬件設(shè)施包括上位機(jī),CPU E5500@ 2.80 GHz;軟件環(huán)境為ERTOS(Embedded Real-Time Operating Systems,ERTOS)操作系統(tǒng),Platform Builder集成開發(fā)環(huán)境。此次實(shí)驗(yàn)環(huán)境設(shè)置的具體內(nèi)容及參數(shù)如表2所示。
結(jié)合表2所示,實(shí)驗(yàn)內(nèi)容為測(cè)試兩種程序的更新耗時(shí),更新耗時(shí)越短,證明該程序的更新速率越快。首先,使用本文設(shè)計(jì)的程序更新網(wǎng)絡(luò)目錄,通過(guò)Python爬蟲技術(shù)自動(dòng)下載網(wǎng)絡(luò)目錄更新所需參數(shù),記錄更新耗時(shí)。再使用傳統(tǒng)程序更新網(wǎng)絡(luò)目錄,通過(guò)人工手動(dòng)下載網(wǎng)絡(luò)目錄更新所需參數(shù),同樣記錄更新耗時(shí),并記錄實(shí)驗(yàn)結(jié)果。
3.2? 實(shí)驗(yàn)結(jié)果與分析
根據(jù)上述提出的實(shí)驗(yàn)步驟,將實(shí)驗(yàn)結(jié)果以表格的形式進(jìn)行展示,實(shí)驗(yàn)數(shù)據(jù)對(duì)比表如表3所示。
根據(jù)表3可得出如下結(jié)論:本文設(shè)計(jì)程序更新網(wǎng)絡(luò)目錄平均耗時(shí)為1.535 s,而對(duì)照組為4.984 s,本文設(shè)計(jì)程序更新網(wǎng)絡(luò)目錄平均耗時(shí)明顯低于對(duì)照組,更新速率更快,因此基于Python爬蟲技術(shù)可以更高效地更新網(wǎng)絡(luò)目錄。
4? 結(jié)? 論
應(yīng)用實(shí)例的分析結(jié)果表明,相比傳統(tǒng)的網(wǎng)絡(luò)目錄更新程序,基于Python爬蟲技術(shù)設(shè)計(jì)的網(wǎng)絡(luò)目錄更新程序速率更高,可廣泛應(yīng)用于網(wǎng)絡(luò)目錄更新方面。通過(guò)基于Python爬蟲技術(shù)的網(wǎng)絡(luò)目錄更新程序設(shè)計(jì),希望能夠在確保網(wǎng)絡(luò)目錄更新精度的同時(shí),提高網(wǎng)絡(luò)目錄更新速率,增強(qiáng)網(wǎng)絡(luò)目錄更新程序的綜合性能。在后網(wǎng)絡(luò)目錄更新程序的發(fā)展中,應(yīng)加大本文設(shè)計(jì)程序在網(wǎng)絡(luò)目錄更新中的應(yīng)用,并將Python爬蟲技術(shù)作為促進(jìn)網(wǎng)絡(luò)目錄更新程序優(yōu)化設(shè)計(jì)的關(guān)鍵技術(shù),持續(xù)推進(jìn)研究?;诖舜窝芯繒r(shí)間有限,雖然取得了一定的研究成果,但對(duì)于該程序的研究仍不完善,今后還要對(duì)其進(jìn)行進(jìn)一步研究,為網(wǎng)絡(luò)目錄更新程序的進(jìn)一步優(yōu)化提供參考依據(jù)。
參考文獻(xiàn):
[1] 李玉香,王孟玉,涂宇晰.基于python的網(wǎng)絡(luò)爬蟲技術(shù)研究 [J].信息技術(shù)與信息化,2019(12):143-145.
[2] 畢森,楊昱昺.基于python的網(wǎng)絡(luò)爬蟲技術(shù)研究 [J].數(shù)字通信世界,2019(12):107-108.
[3] 王思敏,尹伊秋,宣靜雯,等.基于網(wǎng)絡(luò)爬蟲技術(shù)的數(shù)字資源檢測(cè)軟件的設(shè)計(jì)與實(shí)現(xiàn) [J].現(xiàn)代電子技術(shù),2019(10):132-135.
[4] 溫婭娜,袁梓梁,何詠宸,等.基于Python爬蟲技術(shù)的網(wǎng)頁(yè)解析與數(shù)據(jù)獲取研究 [J].現(xiàn)代信息科技,2020,4(1):12-13+16.
[5] 李培.基于Python的網(wǎng)絡(luò)爬蟲與反爬蟲技術(shù)研究 [J].計(jì)算機(jī)與數(shù)字工程,2019,47(6):1415-1420+1496.
[6] 鄧世廣,王月,馬亞偉.基于Python爬蟲技術(shù)的高精度地震目錄更新程序的設(shè)計(jì)與應(yīng)用 [J].中國(guó)地震,2019,35(3):541-549.
[7] 曹丙虎,張建新.一種基于串口通信的DSP程序更新方法 [J].科技視界,2019(34):111-112.
[8] 于倡和,蘭巨龍,胡宇翔,等.距離矢量路由混合SDN網(wǎng)絡(luò)的一致性更新 [J].中國(guó)科學(xué):信息科學(xué),2018,48(9):126-140.
[9] 曾曉娟.基于Python爬蟲技術(shù)的應(yīng)用 [J].辦公自動(dòng)化,2018,23(20):62-64.
作者簡(jiǎn)介:宋鈺(1984—),女,瑤族,湖南郴州人,講師,工程碩士,本科,研究方向:Python語(yǔ)言設(shè)計(jì)開發(fā)、計(jì)算機(jī)專業(yè)課程教學(xué)。