摘? 要:現(xiàn)如今,互聯(lián)網(wǎng)技術(shù)和大數(shù)據(jù)處于更新?lián)Q代階段,而在巨大數(shù)量數(shù)據(jù)庫當中及時收集有用的信息便顯得尤為重要。同時,這也是目前計算機技術(shù)領(lǐng)域迫切需要解決的問題。Python屬于一類高級編程語言。通過多個角度對Python語言功能優(yōu)勢進行闡述,并對Python語言在挖掘Web信息中具體的應(yīng)用方法進行分析,旨在發(fā)揮Python語言的潛在優(yōu)勢,進而完善與優(yōu)化Web信息的挖掘和處理。
關(guān)鍵詞:Python語言;Web數(shù)據(jù);挖掘與分析
中圖分類號:TP311.13? ? ? 文獻標識碼:A 文章編號:2096-4706(2019)23-0063-03
Web Data Mining and Analysis Based on Python Language
YANG Ying
(Beijing Information Technology College,Beijing? 100018,China)
Abstract:Nowadays,internet technology and big data are in the stage of updating,and it is especially important to collect useful information in a timely manner in a huge number of databases. At the same time,this is also an urgent problem in the field of computer technology. Python belongs to a class of high-level programming languages. This article expounds the advantages of Python language from multiple angles,and analyzes the specific application methods of Python language in mining Web information. The purpose is to make full use of the potential advantages of Python language to improve and optimize Web information mining and processing.
Keywords:Python language;Web data;mining and analysis
0? 引? 言
伴隨著互聯(lián)網(wǎng)技術(shù)發(fā)展速度的不斷提升,Web作為一種互聯(lián)網(wǎng)用戶共享數(shù)據(jù)發(fā)展而來的Internet應(yīng)用,所承擔的信息量呈指數(shù)增長,Web的運用和發(fā)展給人們的現(xiàn)實生活與工作帶來了很大的益處,已經(jīng)成為用戶獲取所需數(shù)據(jù)的最佳途徑。現(xiàn)如今,Web信息處于急劇膨脹階段,要實現(xiàn)信息的有效篩選和運用面臨著很大的挑戰(zhàn)。并且Web內(nèi)容的特征在于非結(jié)構(gòu)性與多樣性,使得數(shù)據(jù)的獲取變得更加困難。借鑒Python技術(shù)來進行Web信息的提取與挖掘,能夠在諸多領(lǐng)域發(fā)揮效用,進而促進數(shù)據(jù)的分析與搜集效率的最大化提高,進一步提高社會生產(chǎn)力。
1? Python語言的特征
Python語言屬于一種新型語言,由第四代程序編制,所面對的是交互性及解釋性對象,其使用Web技術(shù)和非Web技術(shù)所發(fā)揮的作用是無法比擬的。譬如,Google代碼的編寫就使用了Python語言,國內(nèi)豆瓣網(wǎng)也運用了Python技術(shù)。Python不失為一類腳本型語言,其具有較高的代碼開發(fā)率,通過對第三方數(shù)據(jù)庫的運用,可利用對簡單代碼的閱讀描述其強大的性能。
Python語言中很少有可讀性代碼,同樣性能的代碼C語言占據(jù)1/5。另外,還呈現(xiàn)在其無花括號或是begin…end…分割語句語塊,運用Python語言之中的冒號能夠?qū)⒋a合理地進行分層,如書寫的條件語句:ifTrue:print“Yes”當中的if語句尾端使用的就是冒號,顯示第二行print語句即為下層語句,需滿足相應(yīng)條件才可以繼續(xù)執(zhí)行。
2? Python語言Web的運用
Python語言的另外一方面的優(yōu)勢就是跨平臺和開源性,在使用了Web程序進行設(shè)計后優(yōu)勢更大。此種語言所使用的WSGI這一模型隸屬于Python服務(wù)器范圍,所運用的程序與中間層二者屬于官方標準,其主要限制在于對異步模型不予支持。同時Python語言還逐漸變成網(wǎng)游行業(yè)編程流程中一種主流的語言,替代了原有的C/C++。
Python語言用于云計算中時,可以使大部分基層朝虛擬化的方向發(fā)展。云計算給用戶提供了優(yōu)質(zhì)化的資源服務(wù),其中涵蓋了Saas/Paas/Iaas等等,譬如,易度Paas平臺就使用了Python語言。Python可以運用標準化數(shù)據(jù)庫對大數(shù)據(jù)當中出現(xiàn)的一系列問題進行妥善的解決,良好地處理、轉(zhuǎn)換、分析大數(shù)據(jù)工作,最后提取大數(shù)據(jù)特點并將呈現(xiàn)其結(jié)構(gòu)方式的相關(guān)需要。
3? Wed數(shù)據(jù)的設(shè)計框架
3.1? Django
Django屬于常見的Python Web設(shè)計框架。其Web設(shè)計框架屬于開源性,具體涵蓋諸多組件,能夠保證對儲存、界面、映射關(guān)系等性能實施動態(tài)管理。開發(fā)Django使用了DRY原則,同時具備單獨且立輕量級的Web服務(wù)器,并能夠迅速開發(fā)運用Web技術(shù)。
Django設(shè)計需要遵守MVC模式的原則,具體涵蓋三部分,如控制、視圖、模型。模型層在使用程度的最基層,其重要責任就是對數(shù)據(jù)有關(guān)的事宜進行妥善處理,比如說數(shù)據(jù)的驗證及儲存等事宜。因Django當中用戶輸入的控制模塊全權(quán)交由基本的框架進行處理,還被稱作模板層。此層負責呈現(xiàn)數(shù)據(jù),負責存取模板和對模板的合理調(diào)用等有關(guān)業(yè)務(wù)流程。程序?qū)T在使用模板語言對HTML頁面進行渲染的過程中,給模板體現(xiàn)出需要的數(shù)據(jù),使用特殊的模板獲取相應(yīng)的渲染結(jié)果。視圖層構(gòu)成應(yīng)用程序的業(yè)務(wù)思維,其重要責任就是體現(xiàn)頁面或其他類文檔之中的相關(guān)數(shù)據(jù)。
Django的操作過程:
(1)瀏覽器向Web服務(wù)器傳送HTTP請求。
(2)Web服務(wù)器在接收到請求之后轉(zhuǎn)至使用Django。
(3)Django請求中間層按照URLconf模型實施匹配及映射到合適的函數(shù);此種函數(shù)使用模板和模型,按需求形成響應(yīng);中間層再把這種響應(yīng)包裝成HTTP響應(yīng),并將其退回至Web服務(wù)器。
(4)用戶瀏覽器接收Web服務(wù)器發(fā)送的響應(yīng)。
3.2? CherryPy
CherryPy鑒于Python面向?qū)ο蟮腍TTP構(gòu)架,適用于Python的開發(fā)者。使用CherryPy技術(shù)進行Web技術(shù)的開發(fā)運用與設(shè)計,但CherryPy沒有提供相關(guān)的語言機制。其本身內(nèi)置相應(yīng)的Web服務(wù)器,用戶不需要另外搭建Web服務(wù)器,就能直接運行于內(nèi)置程序之中。服務(wù)器的職責:其一,轉(zhuǎn)換基層TCP的套接字信息傳輸方式為HTTP請求,并傳送至處理程序之中;其二,將上層由軟件傳送而來的數(shù)據(jù)封裝為HTTP響應(yīng),并為下層的TCP套接字進行傳遞。
3.3? Flask
Flask適合應(yīng)用于輕量級Web中。此類服務(wù)器網(wǎng)關(guān)接口正在運用Werkzeug,模板引擎也要使用jinja2,F(xiàn)lask運用BSD授權(quán)。Flask本身并不具備抽象的數(shù)據(jù)庫與驗證表單的基礎(chǔ)性能,其依靠的是第三方數(shù)據(jù)庫將相關(guān)工作妥善完成。Flask結(jié)構(gòu)具有可擴展性特征,容易為其增加所需的功能。
3.4? Pyramid
Pyramid是一個開源構(gòu)架,執(zhí)行工作的效率非常高,無須花費大量的設(shè)計時間。其還包括Python/Perl/Ruby特征,以及快速的開發(fā)性能。
3.5? TurboGear
TurboGear需要建立在別的構(gòu)架的基礎(chǔ)上,其正試圖集結(jié)框架的優(yōu)秀部分。其可以讓設(shè)計人員從簡單的文件服務(wù)方面進行設(shè)計,慢慢延伸至全棧式服務(wù)。
3.6? Django與Pyramid、Flask的比較
Flask主要面向簡單要求的小應(yīng)用,即微框架,但Django與Pyramid則是面向一些大型功能。后二者具備不一樣的靈活性與拓展性。Pyramid比較重視靈活性,設(shè)計者在具體的工作當中可以對使用工具進行合理的選取,比如說在URL結(jié)構(gòu)、數(shù)據(jù)庫、模板品質(zhì)等選擇流程中。Django為Web設(shè)計人員供應(yīng)并設(shè)計了有效的處理方法,其涵蓋諸多模板。
Django中涵蓋單純的ORM模塊,設(shè)計Pyrami和dFlask的相關(guān)人員可自行選取存儲數(shù)據(jù)的工具,ORM中SQLAIchemy屬于很流行的一類模塊,或選取MongoDB與Dynamo等。
Django屬于一站式處理構(gòu)架,設(shè)計者無須消耗很長時間應(yīng)用于選擇基礎(chǔ)的設(shè)備構(gòu)架方面。其涵蓋管理基本的模
板、表單、路由、驗證及數(shù)據(jù)庫等內(nèi)層的建設(shè)性能。Pyramid性能包含驗證和路由,而管理模板和數(shù)據(jù)庫應(yīng)當運用需第三方即可完成,或是運用Pyramid和Flask才能有效運用和建設(shè),只有設(shè)計人員自行構(gòu)建選擇,才能顯得其更具靈活性。
4? 基于Python語言Web數(shù)據(jù)的挖掘與分析
目前,Python語言在實踐設(shè)計環(huán)節(jié)腳本的使用率最廣泛,通過自身良好的交互性、解釋性及面向?qū)ο笥嘘P(guān)特征,讓Python語言使用腳本編寫出的程度代碼具有很好的可讀性,同時使用此種腳本語言所編寫的結(jié)構(gòu)代碼還可以使開發(fā)程序與維護程序變得更加高效。另外,Python腳本語言對于初學(xué)者來說,簡單易懂的使用環(huán)境更具活躍性,這樣才能讓Python語言快速成為當前比較熱門的設(shè)計語言。
4.1? 挖掘web數(shù)據(jù)的定義
Web信息的挖掘又稱挖掘Web信息、開發(fā)Web信息以及挖掘網(wǎng)絡(luò)技術(shù)等,基于實質(zhì)角度而言,指的是將挖掘數(shù)據(jù)與Web領(lǐng)域相結(jié)合后的新型技術(shù)產(chǎn)物。此種技術(shù)具體從大量蕪雜網(wǎng)頁數(shù)據(jù)中迅速獲得與整理出高價值性數(shù)據(jù),并通過對數(shù)據(jù)的轉(zhuǎn)換、分析和處理模型,對信息進行有效的分析與處理,然后按照研究成果來預(yù)測與評估其實際情況,所以Web數(shù)據(jù)的挖掘具有很大的科研價值和商業(yè)價值。此外,挖掘Web數(shù)據(jù)主要利用模擬用戶正常瀏覽的行為,并設(shè)置有效的規(guī)章,從而獲得指定的Web數(shù)據(jù)頁面。Web數(shù)據(jù)挖掘的最終目標就是將非結(jié)構(gòu)化信息從大量信息中提取出來并通過綜合CSV、JSON、XML等方法進行存儲。在這樣的流程當中,牽涉到數(shù)據(jù)化網(wǎng)絡(luò)爬蟲結(jié)構(gòu)及正則表達技術(shù)。
4.2? 應(yīng)用挖掘數(shù)據(jù)技術(shù)的優(yōu)勢
伴隨著我國互聯(lián)網(wǎng)的不斷普及與發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)資源逐漸豐富化,但多數(shù)信息以非結(jié)構(gòu)形式存在著,使信息的采集和分類顯得非常困難。在進行數(shù)據(jù)挖掘前,廣大用戶所采集與分類的信息需選用手動的方式進行復(fù)制粘貼,這樣不但耗時耗力,并且數(shù)據(jù)的質(zhì)量不高,無法實現(xiàn)自動化分析與收集數(shù)據(jù)。而基于Python語言的網(wǎng)絡(luò)爬蟲技術(shù),優(yōu)勢在于準確高、速度快,可促進分析與數(shù)據(jù)采集效率的有效提高,從而提高采集而來的數(shù)據(jù)的品質(zhì)。同時手動式操作無法避免發(fā)生數(shù)據(jù)遺漏以及錯誤數(shù)據(jù)的問題,在實際統(tǒng)計大量數(shù)據(jù)的過程中,具有很大的糾錯難度,而借鑒網(wǎng)絡(luò)化爬蟲技術(shù),數(shù)據(jù)的準確率就會大大提高,就算存在問題,用戶也可以通過對程度的適當調(diào)整就能讓完成糾錯,具備不可比擬的應(yīng)用優(yōu)勢。
4.3? 比較不同的爬蟲算法
目前網(wǎng)絡(luò)爬蟲的核心算法包含優(yōu)先廣度、優(yōu)先深度、Opic、Partial PageRanK爬蟲算法、不同的爬蟲算法優(yōu)勢各有不同,需要將實際的應(yīng)用場景結(jié)合起來進行合理的選擇。
(1)廣度優(yōu)先措施。這種措施具體使用web內(nèi)容中的目錄級別,首先爬取首頁同樣級數(shù)的頁面信息。然后將爬取鏈接置于隊列之中,進而逐漸向外伸展,盡量獲得更多鏈接的信息,提升抓取Web數(shù)據(jù)的速率,所以在爬蟲算法中使用最廣泛的就是廣度優(yōu)先措施。然而,這種計算方法的問題就是在對目錄進行深層挖掘時需耗費大量時間。
(2)深度優(yōu)先措施。此種措施指的是網(wǎng)絡(luò)爬蟲按順序?qū)δ壳癢eb頁面進行直至最深層次的目錄,并在完成一個分支的訪問之后返回,之后爬到另一分支實施訪問,待遍歷全部鏈接之后,才算爬蟲任務(wù)完成。這種方法能夠?qū)ε老x信息進行深層次挖掘,但在對深層站點消息進行挖掘中需要耗費很多的系統(tǒng)性資源。
(3)Partial PageRank措施。這種計算方式屬于爬蟲開始爬取首頁后,按照計算Web層面上Partial PageRank的值確定爬取該頁面的潛在價值,并優(yōu)先爬取PageRank的最大值頁面。進而促進爬蟲效果的全面提高,還能得到很高的遍歷效果,很但可能與具體的遍歷結(jié)果偏差較大,進而降低數(shù)據(jù)的準確率。
(4)Opic措施。此種計算方式還能被當成完善后的一種PageRank計算方式,開始前階段,各個頁面都被賦予同等值,下載完待完成此頁面之后,其最大值可以均勻地分配在鏈接頁面上,爬蟲依照該值的大小確定其優(yōu)先級,并優(yōu)先下載最大值頁面。此種方法無須迭代計算,適用于具體的計算。
(5)數(shù)據(jù)儲存的結(jié)構(gòu)化。很多信息需要儲存在非結(jié)構(gòu)文本當中,要想直接分類和應(yīng)用必定會非常困難,而通過結(jié)構(gòu)化的儲存方式進行儲存,即為抽取Web頁面上沒有結(jié)構(gòu)的信息,利用結(jié)構(gòu)化方式存儲于本地,從而將Web數(shù)據(jù)進行規(guī)范存儲。該流程可以自動執(zhí)行,無須人工干預(yù),用戶可以結(jié)合使用場景自主選擇CSV、XML、數(shù)據(jù)庫等儲存方法。例如,使用數(shù)據(jù)庫方程的儲存方式時,Web數(shù)據(jù)以二維表結(jié)構(gòu)方式實施存儲,此種方式具有速度快、準確度高等優(yōu)勢,正好滿足挖掘多線程信息中存儲數(shù)據(jù)的需要。
(6)正則表達方式。Web頁面通常以Html的格式存在,而Html頁面主要由各類語義的對象組建,不同對象具有不同的標識,通過分析Html頁面,并配置相應(yīng)的正則表達形式,能夠?qū)崿F(xiàn)對指定字符串數(shù)據(jù)的有效查詢和提取。比如,在爬取Web頁面包括“is”數(shù)據(jù)源代碼時,可通過matchObj=re.match(r(.*)is(.*?).*,line,re.MIre.I)的方法來提取信息。進而自行匹配包括“is”字符串并將相關(guān)內(nèi)容進行輸出。在此案例中,(r(.*)is(.*?).*,line,re.MIre.I)就是正則表達式的匹配,可以為提取數(shù)據(jù)供應(yīng)有效方式。此外,為了符合網(wǎng)站頁面的升級需要,保證穩(wěn)定的匹配,客戶可以自主運用Python語言帶有的第三方數(shù)據(jù)庫與相應(yīng)模塊,有效分析和提取Python頁面上的內(nèi)容。
4.4? Web Scraping的工作原理和作用
基于工作原理來講,Web Scraping計算程序在網(wǎng)絡(luò)傳輸層,具體利用TCP協(xié)議和Web服務(wù)器來傳輸數(shù)據(jù),應(yīng)用層需使用HTYP協(xié)議與服務(wù)器進行交互數(shù)據(jù)?;诠δ芙嵌葋碇v,此種程序主要分HTML解析與HTTP交互模塊兩個模塊。在具體的抓取流程中,表示利用交互模塊將TCP鏈接向Web服務(wù)器端口進行發(fā)送,待建設(shè)出有效的鏈接之后,交互模塊才可以向Web服務(wù)器端口發(fā)送GTTP請求報文,交互模塊接收服務(wù)器發(fā)送應(yīng)答報文后將HTTP進行拆封,從中提取HTML信息,然后利用相應(yīng)的模塊對數(shù)據(jù)進行提取與解析,最后將提取數(shù)據(jù)通過格式化方式在數(shù)據(jù)庫中儲存或存儲在簡單結(jié)構(gòu)的文本文件當中。Internet屬于發(fā)展快速重大信息的數(shù)據(jù)庫,這些資源存在的方式通常以無結(jié)構(gòu)文本方式,這就給歸類網(wǎng)絡(luò)資源造成了很大的困難。
5? 結(jié)? 論
總之,本文重點分析基于Python語言來對Web數(shù)據(jù)的原理及方式進行挖掘,并對網(wǎng)絡(luò)爬蟲的計算方式特征以及應(yīng)用使用環(huán)境進行分析,并就數(shù)據(jù)的儲存方法、正則的表達方法、抓取數(shù)據(jù)的流程、分析方式等進行闡述。通過上述分析我們了解到,基于Python語言的網(wǎng)絡(luò)化爬蟲技術(shù)在抓取數(shù)據(jù)使用優(yōu)勢比較顯著,可以自動提取個性數(shù)據(jù),最大化提高分析與搜索數(shù)據(jù)的質(zhì)量。在實際爬取數(shù)據(jù)中,用戶應(yīng)考慮調(diào)整過后和優(yōu)化性的數(shù)據(jù)爬蟲算法,與Python多線程技術(shù)進行結(jié)合,進而使下載緩存得到優(yōu)化,提升挖掘數(shù)據(jù)的功能。
參考文獻:
[1] 吳爽.基于Python語言的Web數(shù)據(jù)挖掘與分析研究 [J].電腦知識與技術(shù),2018,14(27):1-2.
[2] 劉熠.基于Python的Web數(shù)據(jù)挖掘技術(shù)研究與實現(xiàn) [D].荊州:長江大學(xué),2018.
[3] 齊亞莉,張磊.基于Python的圖像搜索系統(tǒng)的設(shè)計與實現(xiàn) [J].北京印刷學(xué)院學(xué)報,2010,18(2):48-51.
[4] 黃雄偉.基于Web數(shù)據(jù)挖掘的客戶行為分析研究及應(yīng)用 [D].武漢:武漢理工大學(xué),2011.
[5] 楊國志,江業(yè)峰.基于Python的聚焦網(wǎng)絡(luò)爬蟲數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn) [J].科學(xué)技術(shù)創(chuàng)新,2018(2):73-74.
[6] 李彥.基于Python的數(shù)據(jù)挖掘——陽光集團的具體數(shù)據(jù)挖掘項目 [J].電腦知識與技術(shù),2018(2):15-20,36.
[7] 白雪麗.淺析基于Python爬蟲技術(shù)的特性及應(yīng)用 [J].山西科技,2018,33(2):53-55.
[8] 代廣珍,徐超.基于Web的數(shù)據(jù)挖掘研究綜述 [C]//2005年“數(shù)字安徽”博士科技論壇論文集.安徽合肥,2005:319-323.
作者簡介:楊迎(1979-),女,漢族,北京人,講師,碩士,研究方向:信息安全。