国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

目前互聯(lián)網(wǎng)中的網(wǎng)絡爬蟲的原理和影響

2019-12-20 19:30趙鑫煒
數(shù)碼設計 2019年5期
關(guān)鍵詞:爬蟲搜索引擎網(wǎng)頁

趙鑫煒

(四川大學錦城學院計算機與軟件學院 四川 成都 611731)

目前,網(wǎng)絡爬蟲技術(shù)(Web Crawler)已經(jīng)應用于互聯(lián)網(wǎng)的絕大多數(shù)地方。其體現(xiàn)為有搜索行為發(fā)生的時刻也就意味著爬蟲技術(shù)正在應用,但是搜索引擎僅是爬蟲技術(shù)其中一個應用點。爬蟲技術(shù)的應用場景簡而言之就是就是把在網(wǎng)頁上顯示的信息通過代碼技術(shù)自動獲取處理需要的信息到本地的過程,這種行為也就建立信息獲得者與被信息被獲得者的利弊關(guān)系。

1 網(wǎng)絡爬蟲實現(xiàn)原理

1.1 網(wǎng)絡爬蟲技術(shù)語言的選擇

應用的與爬蟲技術(shù)目前主流的分別是C\C++,java和python,三者都是實現(xiàn)網(wǎng)絡爬蟲十分成熟的語言。目前互聯(lián)網(wǎng)中主流的搜索引擎都是采用了C\C++編寫爬蟲,擁有cspider等框架,c/c++不失作為最高效的爬蟲語言之一,但學習成本和實現(xiàn)成本高昂。Java作為一個老牌主流語言在爬蟲的實現(xiàn)方面已有較為成熟的框架SeimiCrawler、WebMagic等,有著優(yōu)秀的線程進程管理機制,同時也能夠適應較為負責的爬蟲設計。

Python作為一門最近興起的語言擁有強大的庫支持和穩(wěn)定的線程,進程模式,這使python也成為編寫爬蟲較為主流的語言。其它語言例如php等因為糟糕的線程機制或過于小眾實現(xiàn)成本太高而沒有成為目前爬蟲技術(shù)的主流選擇。

1.2 網(wǎng)絡爬蟲的基本流程

一個網(wǎng)絡爬蟲所需完成最基本的工作[1]如下:(1)在一個網(wǎng)頁上,獲取網(wǎng)頁的標題和網(wǎng)頁中的摘要;(2)將搜集到的網(wǎng)頁標題,鏈接,網(wǎng)頁的摘要放入數(shù)據(jù)庫中;(3)根據(jù)當前網(wǎng)頁的內(nèi)容,搜集網(wǎng)頁中的鏈接信息,并根據(jù)鏈接順序搜索相應鏈接網(wǎng)頁的內(nèi)容。

首先明確在流程中所需要的必要幾個關(guān)鍵點(1)url統(tǒng)一資源定位符:為爬蟲指明就提需要獲取資源在互聯(lián)網(wǎng)中的地址(2)網(wǎng)頁請求:在用戶的正常操作時候點擊一個鏈接向服務器發(fā)送了一個請求(request),這個請求傳到服務器邏輯處理過后又向用戶發(fā)送了一個客戶端所需要的響應信息(response),在爬蟲技術(shù)里就需要通過代碼來模擬請求和處理返回的響應信息獲得目標信息(3)DOM解析:實際上在客戶端與服務器上傳輸?shù)牟皇怯脩艨吹降木W(wǎng)頁頁面,而是一組由服務器組裝好包含目標數(shù)據(jù)的代碼,這些代碼通過瀏覽器DOM樹渲染成客戶端的頁面,DOM文檔中包含了目標數(shù)據(jù)。

一個完整的爬蟲程序流程:首先通過(1)根據(jù)構(gòu)造一個已知的url向服務器發(fā)送網(wǎng)頁請求(2)正確請求到需要的響應信息,否則回到第一步發(fā)送正確網(wǎng)絡請求(3)對返回的響應信息進行DOM解析,重復第一步構(gòu)造新的url判進行新的網(wǎng)頁請求(4)對DOM文檔數(shù)據(jù)進行過濾獲得目標信息并保存到本地。

基于java實現(xiàn)上述流程至少需要一個啟動爬蟲項目的Crawler啟動類、一個用于實現(xiàn)多線程的MultithreadCrawler類、urlLinks類、一個用來發(fā)送請求和響應RequestAndResponse類、一個用來獲取響應信息內(nèi)容ResponseData類、一個用來過濾提取響應信息的DataDetector類。實現(xiàn)過程為在UrlLinks類里使用Set來存放url和一個LinkedList設置需要訪問的url序列,MultithreadCrawler中Thread方法實現(xiàn)多線程提高效率,RequestAndResponse類中使用HttpClient方法根據(jù)構(gòu)造好的url向服務器發(fā)送實際請求,ResponseData檢查返回的響應信息是否是我們需要的數(shù)據(jù)并決定是否繼續(xù)請求,DataDetector使用cssSelector選擇需要的元素并通過正則表達等方法獲取到需要的信息。這是在最理想的情況下使用爬蟲技術(shù)獲取到最簡單的數(shù)據(jù),在實際操作中更多復雜的情況產(chǎn)生。

1.3 網(wǎng)絡爬蟲的技術(shù)難點

本文在爬蟲流程所述第一步構(gòu)造url就是爬蟲設計者需要攻克的第一個方向,絕大多數(shù)目標資源都無法直接獲得url。爬蟲技術(shù)本身就是一個極其耗費網(wǎng)絡帶寬和機器資源的程序,這也要求設計者良好的控制爬蟲程序的多線程控制。對爬取程序的算法的設計,爬蟲算法 有廣度優(yōu)先策略(BFS)、深度優(yōu)先策略(DFS)、非完全PageRank策略(Partial PageRank)、OCIP策略(Online Page Importance Computation)等,從而影響爬取的整律回報率,決定了網(wǎng)絡爬蟲得到全局范圍內(nèi)的最優(yōu)結(jié)果。在獲取到網(wǎng)頁響應信息后還需要正確的解析提取。

2 爬蟲技術(shù)的博弈

2.1 網(wǎng)絡爬蟲的現(xiàn)狀

網(wǎng)絡爬蟲的根據(jù)功能分類中可以分為網(wǎng)頁類爬蟲和接口類爬蟲。前者是被搜索引擎所用,原理是根據(jù)互聯(lián)網(wǎng)上的鏈接進行遍歷獲取網(wǎng)頁。后者是根據(jù)特定的接口構(gòu)造精準的API獲取大量目標數(shù)據(jù),例如第三方火車票、機票購票軟件就是通過特點API獲取到票務信息。

根據(jù)具體引用的不同又分為三類[2],批量型爬蟲(Batch Crawler)、增量型爬蟲(Incremental Crawler)和垂直型爬蟲(Focused Crawler)。批量型爬蟲主要是適應于小型需求用來爬取設定好范圍目標特定目標的資源,例如目前的為保持實時更新的搜索引擎。垂直型爬蟲應用于在一個大范圍爬取目標里面精確爬取到目標從而節(jié)省資源,例如需要在商城中爬取到所有有關(guān)計算機硬件的商品。

根據(jù)爬蟲是意圖可以分為善意型和惡性型。善意型爬蟲主要是被爬取方希望被此爬蟲收錄或者雙方擁有合作協(xié)議,諸多著名搜索引擎就是一個善意的網(wǎng)絡爬蟲,也有部分擁有合作協(xié)議的雙方利用爬蟲進行雙方數(shù)據(jù)庫補全、數(shù)據(jù)交換等。惡意爬蟲主要是未授權(quán)的第三方爬取目標資源的爬蟲程序,主要可以應用于商業(yè)數(shù)據(jù)分析競爭,數(shù)據(jù)庫惡意獲取等,惡意爬蟲不光會對被爬取方造成帶寬服務器等硬件負擔還會盜取到更有價值的商業(yè)信息。

2.2 網(wǎng)絡爬蟲的攻防

在互聯(lián)網(wǎng)中爬蟲于反爬蟲技術(shù)之間的攻防時時刻刻都在發(fā)生,本小節(jié)將介紹幾種較為常見的爬蟲攻防策略。

(1)首先爬蟲實際是在代碼層面進行網(wǎng)頁請求,此時網(wǎng)站可以檢測訪問者是否是瀏覽器訪問從而封堵部分爬蟲,爬蟲同時也可以偽造自己的請求頭為自己訪問添加一個User-Agent使網(wǎng)站判斷自己為網(wǎng)頁訪問。(2)對用戶的操作彈出驗證碼驗證,普通的爬蟲會不斷根據(jù)爬蟲設計者的設計重復的爬取當網(wǎng)站檢測到大量的重復請求后會彈出驗證碼驗證訪問者是否是機器,而爬蟲可以借助更多的算法設計來識別當前驗證碼并自動填入后繼續(xù)爬取或借助第三方打碼平臺填入驗證碼。(3)對于有價值的數(shù)據(jù)設定登錄可訪問,網(wǎng)站一般會通過儲存在客戶端的cookies、token和session來判斷當前用戶,爬蟲程序當然也可以通過更復雜的方法來偽造這些信息。(4)網(wǎng)站從服務器返回一組加密過的字段通過前端復雜的JavaScript來解析這些字段正常顯示,爬蟲也就需要強大是js功力來逆向模擬這些js處理。(5)由于爬蟲程序是在同一ip地址下大批量訪問,網(wǎng)站會檢測同一個ip的訪問頻率阻止爬蟲,爬蟲程序此時可以購買更多的ip地址組成ip池來應對。

3 結(jié)語

本文闡述了目前網(wǎng)絡爬蟲的基本原理,實現(xiàn)爬蟲技術(shù)所需要的關(guān)鍵技術(shù)點和技術(shù)難點,在基于java語言實現(xiàn)的一個基本網(wǎng)絡爬蟲流程。分析了主要爬蟲的幾種分類方法和實例,在目前爬蟲技術(shù)在網(wǎng)絡中出現(xiàn)博弈現(xiàn)象和幾種主要的攻防策略體現(xiàn)。當今數(shù)據(jù)爆炸時代,數(shù)據(jù)就像一個鉆石礦,當它的首要價值被發(fā)掘后仍能不斷給予[2],爬蟲技術(shù)就是為了獲取這些數(shù)據(jù)而生,爬蟲技術(shù)的發(fā)展和博弈會將日益突出。

猜你喜歡
爬蟲搜索引擎網(wǎng)頁
利用網(wǎng)絡爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
Chrome 99 Canary恢復可移除預置搜索引擎選項
基于Python的網(wǎng)絡爬蟲和反爬蟲技術(shù)研究
基于HTML5與CSS3的網(wǎng)頁設計技術(shù)研究
世界表情符號日
基于Django 的分布式爬蟲框架設計與實現(xiàn)*
基于HTML語言的網(wǎng)頁制作方法
基于HTML5靜態(tài)網(wǎng)頁設計
誰搶走了低價機票
搜索引擎怎樣對網(wǎng)頁排序