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

?

網(wǎng)絡(luò)爬蟲針對“反爬”網(wǎng)站的爬取策略研究

2016-05-19 14:02鄒科文李達(dá)鄧婷敏李嘉振
電腦知識與技術(shù) 2016年7期
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲搜索引擎

鄒科文++李達(dá)++鄧婷敏++李嘉振++陳義明

摘要:隨著計算機(jī)技術(shù)和internet的迅猛發(fā)展,信息和知識呈現(xiàn)爆炸性的增長,如何獲取和利用信息成為現(xiàn)代社會提高競爭力的重要途徑,網(wǎng)絡(luò)爬蟲是達(dá)到這一途徑的重要工具。該文詳細(xì)闡述了網(wǎng)絡(luò)爬蟲的體系結(jié)構(gòu)、工作原理和URL搜索策略,針對某些網(wǎng)站采用的“反爬”措施,提出了幾種爬取策略,以實現(xiàn)網(wǎng)頁的有效爬取。對實際網(wǎng)絡(luò)爬蟲獲取信息具有重要的參考價值。

關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;反爬蟲機(jī)制;搜索引擎

中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)07-0061-03

信息和知識爆炸增長的時代,搜索引擎成為人們獲取信息的重要工具。搜索引擎釋放出來的網(wǎng)絡(luò)爬蟲會大量占用互聯(lián)網(wǎng)帶寬,很可能在短時間內(nèi)導(dǎo)致網(wǎng)站訪問速度緩慢,甚至無法訪問。應(yīng)對此種情況,許多網(wǎng)站采取了一些措施來攔截網(wǎng)絡(luò)爬蟲的爬取。本文在分析網(wǎng)絡(luò)爬蟲原理的基礎(chǔ)上,針對“反爬”網(wǎng)站提出了一些有效的爬取策略。

1網(wǎng)絡(luò)爬蟲概述

網(wǎng)絡(luò)爬蟲是抓取網(wǎng)頁信息的一種程序,它可用來檢查一系列站點的有效性,當(dāng)按照需求抓取并保存數(shù)據(jù)時,是搜索引擎的重要組成部分。它還可以定向采集某些網(wǎng)站下的特定信息,比如招聘、二手買賣等信息。

網(wǎng)絡(luò)上的網(wǎng)頁許多都由超鏈接連接,故形成了一張網(wǎng),網(wǎng)絡(luò)爬蟲因此也叫做網(wǎng)絡(luò)蜘蛛,順著網(wǎng)爬,每到一個網(wǎng)頁就抓取信息并抽取新的超鏈接,用于進(jìn)一步爬行的線索。網(wǎng)絡(luò)爬蟲爬行的起點叫做種子,可以自己設(shè)定也可以從某些系列網(wǎng)站獲取。

1.1網(wǎng)絡(luò)爬蟲的組成

網(wǎng)絡(luò)爬蟲主要由控制器、解析器和資源庫三部分組成。控制器是網(wǎng)絡(luò)爬蟲的控制中心,它負(fù)責(zé)分配線程并調(diào)用爬蟲為其分配爬取任務(wù);解析器是網(wǎng)絡(luò)爬蟲的核心,它的主要工作是下載網(wǎng)頁并對網(wǎng)頁中的信息進(jìn)行處理,例如刪除一些JS腳本、HTML標(biāo)簽和空格字符等,抽取特殊HTML標(biāo)簽的功能,分析數(shù)據(jù)功能;資源庫是用于保存下載的網(wǎng)頁資源,并提供生成索引的目標(biāo)源。一般采用中大型的數(shù)據(jù)庫存儲,如Oracle、Sql Server等。

1.2網(wǎng)絡(luò)爬蟲的工作原理

網(wǎng)絡(luò)爬蟲的基本工作流程如下:

1)選取初始種子URL集合;

2)將URL集合放入待抓取URL隊列;

3)從待抓取URL隊列中取出待抓取URL,解析DNS,得到主機(jī)IP,將URL對應(yīng)網(wǎng)頁下載并存儲至網(wǎng)頁資源庫。結(jié)束后將這些URL放入已抓取URL隊列。

4)從已抓取URL隊列中的URL分析出新的滿足需求的URL,放入待抓取URL隊列。

5)循環(huán)第3步,直至滿足停止條件。

傳統(tǒng)網(wǎng)絡(luò)爬蟲框架如圖1所示。

1.3網(wǎng)絡(luò)爬蟲的搜索策略

網(wǎng)絡(luò)爬蟲在運行過程中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL如何排序也是一個值得研究的問題,因為這涉及先抓取那個頁面,后抓取哪個頁面。而排列URL順序的方法,叫做抓取策略。常見的網(wǎng)絡(luò)爬蟲策略有:

1)廣度優(yōu)先搜索策略。在抓取過程中,由根節(jié)點開始,完成當(dāng)前層次的搜索后才跳到下一層次的搜索。該策略實現(xiàn)較為簡單,其基本思想是認(rèn)為與初始URL在一定鏈接距離內(nèi)的網(wǎng)頁具有主題相關(guān)性的概率很大。

2)深度優(yōu)先搜索策略。這種策略的主要思想是網(wǎng)絡(luò)爬蟲從起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之后再轉(zhuǎn)入下一個起始頁,繼續(xù)跟蹤鏈接。

3)最佳優(yōu)先搜索策略。該策略通過計算 URL 描述文本與目標(biāo)網(wǎng)頁的相似度,或者與主題的相關(guān)性,根據(jù)所設(shè)定的閾值選出有效 URL 進(jìn)行抓取。

4)反向鏈接數(shù)策略,反向鏈接數(shù)是指一個網(wǎng)頁被其他網(wǎng)頁鏈接指向的數(shù)量。反向鏈接數(shù)表示的是一個網(wǎng)頁的內(nèi)容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統(tǒng)會使用這個指標(biāo)來評價網(wǎng)頁的重要程度,從而決定不同網(wǎng)頁的抓取先后順序。

2如何應(yīng)對站點反爬蟲機(jī)制

網(wǎng)絡(luò)爬蟲會對目標(biāo)站點發(fā)送大量請求,而這樣的爬蟲機(jī)制會消耗不少網(wǎng)站資源,這對于中小型網(wǎng)站的負(fù)載是 巨大的,甚至因此而崩潰,故不少網(wǎng)站都采取了反爬蟲的機(jī)制。例如:通過識別爬蟲的User-Agent信息來拒絕爬蟲,通過Filter過濾網(wǎng)絡(luò)爬蟲,通過網(wǎng)站流量統(tǒng)計系統(tǒng)和日志分析來識別爬蟲,利用網(wǎng)站的實時反爬蟲防火墻實現(xiàn)策略。為了不被站點判斷為爬蟲而被拒絕訪問請求,此處提供兩種方法來維持爬蟲的正常運轉(zhuǎn)。

2.1降低訪問請求頻率

降低訪問請求頻率,在一定程度上是,模仿真人瀏覽頁面的動作,故而不會輕易被網(wǎng)站所封殺,拒絕訪問。實現(xiàn)的方法為在訪問URL的程序中,將訪問請求的線程休眠一段時間。

具體代碼如下:

try { Thread.currentThread().sleep(4000);

} catch (InterruptedException e) {

e.printStackTrace();

}

Sleep的休眠時間按照需求而定,以毫秒(ms)為單位。這種策略的優(yōu)點是減少了目標(biāo)站點單位時間內(nèi)的負(fù)載,而缺點則為爬蟲爬取效率的降低。

2.2設(shè)置代理服務(wù)器

設(shè)置代理服務(wù)器,較之前一種方法來說則以爬蟲的效率為首要要求,實質(zhì)就是某些網(wǎng)站的反爬蟲機(jī)制會封殺爬蟲請求頻率過高的主機(jī)的IP,為了解決這一問題,使用代理服務(wù)器,更換IP以及端口,解除站點對訪問頻率高的主機(jī)訪問的限制。

有兩種調(diào)用的方法,具體代碼如下:

方法一:

Jsoup.connect("http://pv.sohu.com/cityjson").proxy(Proxy.Type.HTTP, "61.158.237.35", 3128).get();

方法二:

System.setProperty("proxySet", "true"); System.setProperty("http.proxyHost", "61.158.237.35"); System.setProperty("http.proxyPort", "3128");

Document a = Jsoup.connect("http://pv.sohu.com/cityjson").get();

System.out.println(a);

其中的代理IP與端口為 61.158.237.35:3128。

代理前后的效果如圖2,3所示。

優(yōu)點:保證爬蟲執(zhí)行不被站點封殺。只要有足夠IP代理可滿足爬取條件。

缺點:單位時間內(nèi)消耗資源過多,給站點帶來較大的負(fù)載。延遲加大,失敗率提高。

2.3偽裝用戶代理

用戶代理User-agent是HTTP協(xié)議中的一個字段,作用是描述發(fā)出HTTP請求終端的一些信息。通俗來說,就是判斷訪問網(wǎng)站對象的類別,每個瀏覽器和正規(guī)的爬蟲都有固定的user-agent,因此只要將這個字段改成知名的user-agent就可以成功偽裝了。對于偽裝瀏覽器user-agent或知名爬蟲user-agent,更推薦偽裝瀏覽器,因為瀏覽器使用者可以是任何人,沒有固定的IP,而知名爬蟲user-agent一般都有固定IP。下面給出若干個瀏覽器的user-agent,每次發(fā)送請求時可隨機(jī)選取一個。

Mozilla/4.0( compatible ;MSIE 8.0;Windows NT 6.0)

Mozilla/4.0( compatible ;MSIE 7.0;Windows NT 5.2)

Mozilla/4.0( compatible ;MSIE 6.0;Windows NT 5.1)

設(shè)置代碼如下:

HttpGet getMethod = new HttpGet(“URl”);

getMethod.setHeader(“User-Agent”,”user agent內(nèi)容”);

2.4 自動登錄

有些網(wǎng)站一檢測到某IP的訪問量異常,就會馬上提出要登錄的要求。針對這種“反爬”策略,在登錄前需要做一些準(zhǔn)備,查清楚POST登錄請求時要附帶的參數(shù),建議先用badboy錄制登錄過程,然后將這一過程導(dǎo)出為jmeter文件,最后用jmeter查看登錄所需的參數(shù)。

3結(jié)束語

總之,為了防止爬蟲被封,原則就是偽裝成正常的用戶,只要按照這個原則總有方法可循。不過若是能熟知一些反爬蟲的原理,然后有針對地進(jìn)行拆招應(yīng)該還是十分有效的。

傳統(tǒng)網(wǎng)絡(luò)爬蟲應(yīng)用于抓取靜態(tài)Web網(wǎng)頁的信息,而AJAX/Web2.0的流行使得如何抓取動態(tài)頁面信息成為目前網(wǎng)絡(luò)爬蟲的瓶頸。另外,網(wǎng)絡(luò)爬蟲的效率與網(wǎng)站穩(wěn)定安全還未能完全達(dá)到兩者兼得的狀態(tài)。對于搜索引擎,它抓取的消耗較大,因此爬蟲的效率、特性和抓取的質(zhì)量就顯得更為重要。在未來的大數(shù)據(jù)時代,網(wǎng)絡(luò)爬蟲技術(shù)地位更為重要,和人工智能技術(shù)相結(jié)合將是熱門的課題。

參考文獻(xiàn):

[1] 郭小丹.幾種開源網(wǎng)絡(luò)爬蟲功能比較[J].黑龍江科技信息,2015(25).

[2] 林雄強(qiáng).網(wǎng)絡(luò)爬蟲[J].中國科技博覽,2014(24).

[3] 趙全軍,成功,李小正,等.一種改進(jìn)的網(wǎng)絡(luò)爬蟲搜索策略[J].中國科技信息,2014(14).

[4] 劉慶杰,孫旭光,王小英.通過Filter抵御網(wǎng)頁爬蟲[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2010(1).

[5] 吳曉暉,紀(jì)星.Web爬蟲檢測技術(shù)綜述[J].湖北汽車工業(yè)學(xué)院學(xué)報,2012(1).

[6] 范純龍,袁濱,余周華, 等.基于陷阱技術(shù)的網(wǎng)絡(luò)爬蟲檢測[J].計算機(jī)應(yīng)用,2010(7).

[7] 吳歡,宋力,劉遇哲.基于HTTP協(xié)議特征字的識別研究[J].計算機(jī)與網(wǎng)絡(luò),2015(9).

猜你喜歡
網(wǎng)絡(luò)爬蟲搜索引擎
煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設(shè)計與實現(xiàn)
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
基于Lucene搜索引擎的研究
搜索引擎,不止有百度與谷歌
同江市| 邵东县| 祁东县| 江陵县| 周宁县| 历史| 丹棱县| 武冈市| 汉沽区| 太康县| 平利县| 永康市| 武穴市| 肥乡县| 仁化县| 高雄市| 利辛县| 凤凰县| 紫阳县| 青铜峡市| 吉林市| 永定县| 砀山县| 青州市| 垦利县| 霍州市| 鸡泽县| 时尚| 黄梅县| 吉林省| 琼结县| 庆安县| 天峨县| 凤台县| 重庆市| 化州市| 绥德县| 土默特右旗| 嵩明县| 辛集市| 乡宁县|