吳道君
(廣東嶺南職業(yè)技術(shù)學(xué)院,廣東 廣州 510663)
在計算機網(wǎng)絡(luò)技術(shù)的不斷發(fā)展下,海量數(shù)據(jù)不斷涌現(xiàn),給人們的生活和工作造成了很大的不便,此時,人們要想從海量數(shù)據(jù)中找到有價值的信息數(shù)據(jù),必須要頻繁手動操作,才能找到需要的信息數(shù)據(jù),而python 網(wǎng)絡(luò)爬蟲框架的設(shè)計和使用的出現(xiàn)和應(yīng)用可以很好地解決這一問題,不僅模仿人的手動操作行為,快速查找數(shù)據(jù),還能縮短信息搜索時間,為進一步提高人們的查找信息數(shù)據(jù)的效率和效果打下堅實的基礎(chǔ)。因此,在大數(shù)據(jù)時代背景下,如何將python 科學(xué)應(yīng)用于網(wǎng)絡(luò)爬蟲框架中是相關(guān)人員必須思考和解決的問題。
網(wǎng)絡(luò)爬蟲作為一種常用的腳本,在具體的運用中,需要按照一定的規(guī)則,完成對互聯(lián)網(wǎng)信息的智能化抓取,因此,網(wǎng)絡(luò)爬蟲被廣泛地應(yīng)用于互聯(lián)網(wǎng)搜索引擎中,為幫助用戶快速獲取最新網(wǎng)站內(nèi)容產(chǎn)生積極的影響。此外,通過利用網(wǎng)絡(luò)爬蟲,一旦識別到用戶需要訪問的頁面內(nèi)容,系統(tǒng)可以自動向服務(wù)器發(fā)送頁面請求,從而將相應(yīng)的頁面內(nèi)容呈現(xiàn)在用戶面前,為提高網(wǎng)站搜索引擎處理效率和效果,滿足用戶的使用需求創(chuàng)造良好的條件。
通過使用python 語言,編寫網(wǎng)絡(luò)爬蟲具有以下優(yōu)勢:(1)python 語言簡單易學(xué),降低了開發(fā)難度,省略了IDE 的使用,極大地提高了開發(fā)效率和效果。(2)僅僅使用文本編輯器,就可以完成對多種中小型應(yīng)用的設(shè)計和開發(fā),同時,還能借助網(wǎng)絡(luò)爬蟲框架,實現(xiàn)對網(wǎng)站信息數(shù)據(jù)的深入分析、挖掘和存儲,以達到科學(xué)處理相關(guān)信息數(shù)據(jù)的目的。(3)python 語言含有功能強大的HTML 解析器和網(wǎng)絡(luò)支持庫,通過利用HTML 解析器,可以實現(xiàn)對各個網(wǎng)頁標(biāo)簽內(nèi)容的快速解析,便于用戶高效、快捷地抓取網(wǎng)頁內(nèi)容;通過借助網(wǎng)絡(luò)支持庫,可以編寫較少的代碼實現(xiàn)對相關(guān)應(yīng)用程序的開發(fā)。
待抓取URL 隊列作為網(wǎng)絡(luò)爬蟲框架的重要組成部分,URL 排列順序是否合理直接影響了網(wǎng)頁抓手順序,而網(wǎng)絡(luò)爬取策略的應(yīng)用可以科學(xué)地確定URL 排列順序。網(wǎng)絡(luò)爬取策略主要包含以下三種類型:(1)深度優(yōu)先排序。該排序方式在具體的運用中,需要從根節(jié)點入手,實現(xiàn)對葉子節(jié)點的快速尋找。在處理網(wǎng)頁期間,通過選擇合適的超鏈接,可以實現(xiàn)對網(wǎng)頁內(nèi)容的深度優(yōu)先搜索。(2)最佳優(yōu)先排序。該排序方式在具體的運用中,需要精確計算URL 描述文本、主題相關(guān)性以及網(wǎng)頁相似度,并對最終的計算結(jié)果進行抓取。(3)廣度優(yōu)先排序。該排序方式在具體的運用中,同樣需要從根節(jié)點入手,采用逐一遍歷的方式,對當(dāng)前層次網(wǎng)頁內(nèi)容進行全面搜索,為下一層次網(wǎng)頁內(nèi)容的高效搜索提供重要的依據(jù)和參考。
2.1.1 模型分析
模型分析作為網(wǎng)絡(luò)爬蟲框架設(shè)計的首要環(huán)節(jié),其分析效果直接影響了網(wǎng)絡(luò)爬蟲框架的設(shè)計水平,因此,相關(guān)人員要做好對模型的科學(xué)分析。首先,要構(gòu)建URL 任務(wù)列表,獲取合適的爬取URL 地址,同時,當(dāng)URL 任務(wù)列表構(gòu)建完成后,還要針對深度爬取網(wǎng)頁預(yù)先設(shè)定的內(nèi)容,對各個網(wǎng)頁進行抓取處理,然后,從各個頁面中獲取新的URL 地址,并對這些地址存放是隊列中,當(dāng)符合終止條件時,可以對URL 重復(fù)情況進行判斷和分析,在此基礎(chǔ)上,根據(jù)已經(jīng)設(shè)定好的微博內(nèi)容,完成對各個頁面的精確搜索,然后,科學(xué)、全面分析頁面,并從各個頁面信息中提取和整理用戶需要的URL 地址,最后,將所獲得的URL 地址返回到指定的任務(wù)列表中,為實現(xiàn)重新爬取,提高網(wǎng)絡(luò)爬蟲運行效率和效果打下堅實的基礎(chǔ)。
2.1.2 總體框架設(shè)計
圖1 網(wǎng)絡(luò)爬蟲框架設(shè)計示意圖
圖2 爬蟲程序流程圖
網(wǎng)絡(luò)爬蟲框架設(shè)計示意圖如圖1 所示。從圖中可以看出,該框架主要包含以下三個層次:(1)用戶交互層。用戶交互層主要由兩個子頁面組成,一個是爬蟲配置子頁面,另一個是爬蟲管理子頁面,通過應(yīng)用這兩個頁面,可以提高用戶交互效果。其中,爬蟲配置子頁面主要負責(zé)對用戶所提交請求的接收和處理,為保證后期消息預(yù)處理模塊的科學(xué)解析打下堅實的基礎(chǔ)。此外,在整個集群中,爬蟲啟動操作或者暫停操作[1],均可以借助爬蟲管理子頁面,實現(xiàn)對各個節(jié)點上爬蟲的實時監(jiān)控。(2)消息處理層。消息處理層主用負責(zé)對頁面所傳遞請求消息的驗證和處理,實現(xiàn)對海量信息數(shù)據(jù)的高效處理,以達到有效滿足大規(guī)模業(yè)務(wù)需求,系統(tǒng)內(nèi)部緩存器在具體的設(shè)計中,主要使用了Kafka.為保證數(shù)據(jù)流處理性能,縮短數(shù)據(jù)流處理時間打下堅實的基礎(chǔ)。(3)業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯層作為整個系統(tǒng)的核心和關(guān)鍵,主要由若干個節(jié)點構(gòu)成。各種爬蟲節(jié)點采用任務(wù)調(diào)度的方式,實現(xiàn)對各個結(jié)構(gòu)的統(tǒng)一管理,提高了任務(wù)調(diào)度的效率和效果[2],為實時檢測和掌握爬蟲節(jié)點運行狀態(tài),取得最佳調(diào)度效果創(chuàng)造良好的條件。主節(jié)點所執(zhí)行的爬蟲任務(wù)隊列主要包含以下兩種:一種是總爬蟲,另一種是節(jié)點。其中,總爬蟲主要負責(zé)對頁面請求消息以及爬蟲新抓取任務(wù)的集中存儲,使其安全、可靠地存儲于任務(wù)隊列中;各爬蟲節(jié)點主要負責(zé)對待抓取爬蟲任務(wù)的存放。對于待抓取爬蟲而言,所選用的存放位置主要以內(nèi)存型數(shù)據(jù)庫為主[3],為實現(xiàn)對爬蟲任務(wù)的快速獲取和提交發(fā)揮出重要作用。
2.1.3 程序流程設(shè)計
對于網(wǎng)絡(luò)爬蟲框架而言,在python 的應(yīng)用背景下,需要加強對爬蟲程序流程的科學(xué)設(shè)計,為開發(fā)出一款功能強大、實用性強的網(wǎng)絡(luò)爬蟲系統(tǒng)打下堅實的基礎(chǔ)。爬蟲程序流程圖如圖2所示。
為了將python 科學(xué)應(yīng)用于網(wǎng)絡(luò)爬蟲框架中,保證網(wǎng)絡(luò)爬蟲框架實現(xiàn)效果[4],相關(guān)人員要除了要做好對目標(biāo)網(wǎng)站URL 的設(shè)置外,還要重視對爬取模塊、偽裝time 模塊、數(shù)據(jù)處理模塊的實現(xiàn),為保證用戶搜索信息的高效性,滿足用戶查詢有效信息的需求產(chǎn)生積極的影響。
2.2.1 目標(biāo)網(wǎng)站URL
網(wǎng)頁端新浪微博所選用的反爬蟲手段比較先進,為了降低爬蟲手段的實施難度,需要將目標(biāo)網(wǎng)站地址設(shè)置為:https://m.weibo.cn/。此外,為了確保用戶在最短時間內(nèi)快速查找到有價值的信息,相關(guān)人員需要將目標(biāo)網(wǎng)站URL 設(shè)置為程序讀取內(nèi)容,只有這樣,才能充分發(fā)揮和利用python 優(yōu)勢,降低網(wǎng)絡(luò)爬蟲框架開發(fā)難度,為準(zhǔn)確、高效地抓取信息打下堅實的基礎(chǔ),最后,還要將制定的網(wǎng)站URL 更改為微博ID 爬取地址,以滿足抓取微博評論信息的需求。
2.2.2 爬取模塊
爬取模塊作為網(wǎng)絡(luò)爬蟲框架的核心模塊,在具體的開發(fā)和實現(xiàn)中,需要借助python 語言,采用urllib 編寫的方式,利用HTTP 庫開發(fā)模式,完成對簡潔頁面的開發(fā)[5],以達到縮小開發(fā)時間的目的。此外,該模塊在整個開發(fā)過程中,需要用到兩種請求方式:一種是get 請求方式,另一種是post 請求方式,其中,get請求方式主要負責(zé)將用戶訪問請求傳遞給用戶需要訪問的微博URL 地址中;post 請求方式主要負責(zé)將post 請求發(fā)送給HTML 頁面。
2.2.3 偽裝time 模塊
偽裝time 模塊在具體的開發(fā)和實現(xiàn)中,為了實現(xiàn)對網(wǎng)站信息的保護,需要借助網(wǎng)站的爬蟲功能,采用IP 封禁的方式,將爬蟲程序進行封禁處理,同時,還要將所有訪問地址偽裝設(shè)置為瀏覽器形式,便于用戶數(shù)的操作,此外,還要加強對時間限制方式的設(shè)置,以確保用戶能夠快速、精確地訪問需要的爬取數(shù)據(jù)網(wǎng)站,避免系統(tǒng)因抓取程序[6],出現(xiàn)屏蔽IP 現(xiàn)象。偽裝time 模塊在傳遞響應(yīng)參數(shù)期間,重點使用了time·sleep()方法。對于網(wǎng)絡(luò)爬蟲框架而言,其偽裝time 模塊功能主要是根據(jù)用戶的使用需求,對爬蟲程序訪問相關(guān)參數(shù)進行設(shè)置,以達到科學(xué)控制和調(diào)整訪問網(wǎng)站時間間隔的目的。最后,還要通過全面提取和整理微博評論詳細時間,為后期優(yōu)化微博功能提供重要的依據(jù)和參考。
2.2.4 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊主要借助python 語言,對數(shù)據(jù)進行導(dǎo)入、整理處理,為實現(xiàn)對數(shù)據(jù)深入分析和挖掘,保證數(shù)據(jù)的處理效果打下堅實的基礎(chǔ)。此外,在python 語言的應(yīng)用背景下,相關(guān)人員好藥采用構(gòu)建numpt 數(shù)組的方式,不斷優(yōu)化和完善數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析和解析過程,為進一步提高數(shù)據(jù)處理產(chǎn)生積極的影響產(chǎn)生積極的影響。此外,通過利用python 語言,可以時對處理表格、以及重要數(shù)據(jù)的科學(xué)設(shè)計[7],為實現(xiàn)對數(shù)組數(shù)據(jù)的統(tǒng)一化處理發(fā)揮出重要作用,例如:在對新浪微博評論進行設(shè)計期間,需要借助numpy,完成對多種類型數(shù)據(jù)的處理,pandas 數(shù)組主要包含以下三種類型,分別是以為數(shù)組、二維數(shù)組和三維數(shù)組。其中一維數(shù)組和二維數(shù)組使用范圍相對比較廣泛,一維數(shù)組作為一種常用的數(shù)組,攜帶大量的標(biāo)簽,將整數(shù)、浮點數(shù)、字符串等所有數(shù)據(jù)類型包含在內(nèi),一維數(shù)組采用標(biāo)簽定位的方式,可以實現(xiàn)對多種數(shù)據(jù)類型的查找和利用[8]。二維數(shù)組作為一種常用的二維數(shù)據(jù)結(jié)構(gòu),內(nèi)部含有大量的標(biāo)簽,為完成對各種數(shù)據(jù)類型的定位,保證網(wǎng)絡(luò)爬蟲框架實現(xiàn)效果提供有力的保障
綜上所述,在大數(shù)據(jù)時代背景下,通過將python 應(yīng)用于網(wǎng)絡(luò)爬蟲框架中,不僅可以快速提取多種類型的信息數(shù)據(jù),還能有效地分析和挖掘大量的有價值的信息數(shù)據(jù),為人們查找有用信息數(shù)據(jù)提供極大的便利。此外,python 語言適用范圍廣,功能多樣強大,為多種類型的軟件工具包提供重要的技術(shù)支持。另外,python 語言還可以快速提取Web 信息數(shù)據(jù),很好地滿足了人們高效搜索信息數(shù)據(jù)的需求。