劉文輝 李麗
摘 要:面對數據大爆炸,人們很難獲取有用的信息。網絡爬蟲技術成為了搜索引擎中最為重要的部分,能夠有效的在海量數據中找到有價值的信息。本論文從不同方面基于python的網絡爬蟲技術的研究,希望為研究網絡爬蟲技術的專家和學者提供理論參考依據。
關鍵詞:python;網絡爬蟲技術;分析
隨著我國社會化和移動互聯網的逐步發展,網絡上的數據呈爆炸式增長。數據大爆炸,導致了那些有需要的人們在網上找他們所需的信息愈發的困難,由此搜索引擎根據這種需求產生了。這個時候我們需要搜索引擎去解決的困難,不僅僅是幫助人們從大量的數據里找到答案,還要在大量的答案里面找到人們最需要的結果,迅速快捷的找到精準答案比找到很多無用答案更被人們所需要。搜素引擎要做什么呢?搜索引擎需要從海量數據中提取價值,即為數據挖掘。從本質上看,搜索引擎是一個典型的大數據應用。網絡爬蟲技術在搜索引擎中,是很關鍵也很基礎的構件。搜索引擎聚集了網絡中成千上萬的信息網頁,并為網頁中逐個詞建立索引。在人們設立搜索引擎的過程中,采集信息網頁是一個很重要的部分。爬蟲程序就是用來搜集網頁的程序。網絡爬蟲是搜索引擎中信息采集的部分,整個搜索引擎索引網頁的質量、數量和更新周期,都會受網絡爬蟲技術性能的影響。因此對于網絡爬蟲的研究具有深遠的意義。
1 網絡爬蟲以及網絡爬行
網絡爬蟲(Web Crawler)是搜索引擎的最基礎部分,主要是一個能夠下載網頁的計算機程序或者腳本,又被稱為網絡蜘蛛(Web Spider)。一般而言,網絡爬蟲從種子集的URL 集合開始運行,先將 URL 放入一個有序隊列中,然后按照一定的順序將 URL 取出,然后下載所對應的頁面。經過對網絡頁面的分析,獲取新的 URL,并將其放入有序隊列中,如此反復,直到隊列為空或者是滿足停止爬行的條件,從而遍歷整個網絡。這便是網絡爬蟲的運行過程,稱為網絡爬行(Web Crawling)。
2 網絡爬蟲的分類
網絡爬蟲的分類比較多,根據其結構和實現技術主要可以分為通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲以及深層網絡爬蟲四種,實際應用中的網絡爬蟲一般是多種及技術結合實現的。
2.1通用網絡爬蟲
一般情況下,通用網絡爬蟲對爬行頁面的順序要求不高,大多采用并行的工作方式,刷新頁面需要的時間比較長。因此,通用網絡爬蟲往往會采用一定的爬行策略來縮短爬行時間,比較常用的有深度優先和廣度優先兩種。深度優先是指按照深度由低到高訪問鏈接,直到無法再深入;廣度優先是指首先爬行網頁的淺目錄內容,然后爬行深目錄內容。比較常見的通用網絡爬蟲有 Mercator 和Google Crawler。Google Crawler 是一個分布式的爬蟲,它利用異步 I/O 來實現并行化,并且擁有獨立的進程來維護 URL 隊列,Google Crawler 還使用了PageRank 等多種算法來提高系統的性能。
2.2聚焦網絡爬蟲
聚焦網絡爬蟲能夠選擇性的爬行與預設主題相關的頁面。聚焦爬蟲的爬行范圍小,能夠有效的節省網絡資源,并且頁面更新比較快。聚焦網絡爬蟲的爬行策略主要由頁面的內容評價以及連接的結構評價決定。在基于內容評價的爬行策略中,主要采用 Fish Search 算法來評價查詢頁面與查詢主題的相關度;在基于連接結構評價的爬行策略中,主要 PageRank 算法來評價鏈接的重要性,具體就是優先訪問 PageRank 值最大的頁面;在基于增強學習的爬行策略中,利用貝葉斯分類器對文本進行分類,從而計算出不同鏈接的重要性,從而確定訪問順序。
2.3增量式網絡爬蟲
增量式網頁爬蟲主要是對已經下載的網頁進行更新,只爬行更新的網頁,從而保證刷新出的網頁是最新的。增量式網絡爬蟲一般只在頁面需要時才會開始爬行,不會重復下載沒有發生變化的網頁,因此在很大程度上減少了網絡資源的浪費,但是算法比較復雜且實現難度比較大。
3 基于Python的網絡爬蟲分析
3.1 Python語言的優越性
(1)方便簡單,容易上手。Python幾乎能在所有的操作系統上運行,很容易上手,初學者可以快速適應。
(2)Python是一個廣泛使用的腳本語言,其自帶了urllib、url-lib2等爬蟲最基本的庫,可以抓取Url的內容。
(3)Python擅長處理字節流的各種模式,具有很好的開發速度。
3.2 Python網絡爬蟲模塊
3.2.1 Url管理模塊
Url管理模塊的作用是管理Url,包括已經被抓取的Url集合和還未被抓取的Url集合。Url管理模塊可以有效預防重復抓取循環抓取的問題。
Python中實現網址管理有三種途徑:
(1)存儲在內存中,針對于Url數據較少的情況。在Python中用Set()集合加以實現,Set()可以消除重復數據,避免重復抓取的問題。
(2)存儲在關系數據庫,實現永久存儲。建立Url表,該表中有兩個字段,一個字段是Url地址,另一個字段用來表示Url是否被抓取。
(3)存儲在緩存數據庫redis中,針對于Url數據較多的情況下。也可以用Set()集合來實現,來存取“待爬”的Url地址和“已爬”的Url地址。
3.2.2 網頁下載器
網頁下載器將Url對應的網頁下載到本地,將其存儲為字符串,以便接下來對數據進行處理。
Python支持的網頁下載工具有兩種:Python自身攜帶的urllib2模塊。urllib2針對于簡單的網絡爬蟲,能夠完成網頁下載,提交用戶數據,代理訪問,客戶登錄等多種功能。
3.2.3 網頁解析器
網頁解析器用來從網頁中提取從最初想要的數據。實則上提取的是兩部分:(1)Url列表;(2)目標數據。Python中的網頁解析器有兩種類型:
(1)利用正則表達式。正則表達式將網頁當作字符串來處理,只適用于簡單的網頁。一般網頁較為復雜時,不采用此類方法。
(2)基于網頁的DOM結構。DOM樹是一種樹形標簽結構。網頁解析器會將HTML文檔當成DOM樹,對其進行上下級結構的遍歷來提取有用信息。使用樹形結構可以對網頁中的具體信息來進行定位,定位到具體的某個節點、屬性等。其中BeautifulSoup解析器功能強大,更為盛行。BeautifulSoup利用find_all()和find()方法來搜索節點,find_all()可以查找所有符合查詢條件的標簽節點,并返回一個列表。find()方法查找符合查詢條件的第一個標簽節點。用這兩種方法搜索節點,提取有價值信息。
參考文獻
[1]大數據環境下的網絡爬蟲設計[J].郭麗蓉.山西電子技術.2018(02)
[2]基于網絡爬蟲技術的時令旅游信息獲取[J].鄭鑫臻,吳韶波.物聯網技術.2018(05)
[3]主題網絡爬蟲抓取策略的研究[J].劉清.科技廣場.2017(04)
[4]網絡爬蟲技術的研究與實現[J].繆治.中國新通信.2019(06)
[5]基于匿名網絡的網絡爬蟲設計與實現分析[J].劉煥欣.計算機產品與流通.2017(12)
[6]主題網絡爬蟲關鍵技術的應用探討[J].楊凌云.電腦編程技巧與維護.2018(11)
[7]網絡爬蟲技術在電力產業中的應用[J].賀冠博,蘇宇琦,黃源.電子技術與軟件工程.2017(18)
[8]一種新的主題網絡爬蟲爬行策略[J].宋海洋,劉曉然,錢海俊.計算機應用與軟件.2011(11)