• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      網(wǎng)絡(luò)爬蟲(chóng)在運(yùn)行過(guò)程中,待抓取URL隊(duì)列是很重要的一部分。待抓取URL隊(duì)列中的URL如何排序也是一個(gè)值得研究的問(wèn)題,因?yàn)檫@涉及先抓取那個(gè)頁(yè)面,后抓取哪個(gè)頁(yè)面。而排列URL順序的方法,叫做抓取策略。常見(jiàn)的網(wǎng)絡(luò)爬蟲(chóng)策略有:

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

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

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

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

      2如何應(yīng)對(duì)站點(diǎn)反爬蟲(chóng)機(jī)制

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

      2.1降低訪問(wèn)請(qǐng)求頻率

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

      具體代碼如下:

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

      } catch (InterruptedException e) {

      e.printStackTrace();

      }

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

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

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

      有兩種調(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)點(diǎn):保證爬蟲(chóng)執(zhí)行不被站點(diǎn)封殺。只要有足夠IP代理可滿(mǎn)足爬取條件。

      缺點(diǎn):?jiǎn)挝粫r(shí)間內(nèi)消耗資源過(guò)多,給站點(diǎn)帶來(lái)較大的負(fù)載。延遲加大,失敗率提高。

      2.3偽裝用戶(hù)代理

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

      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 自動(dòng)登錄

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

      3結(jié)束語(yǔ)

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

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

      參考文獻(xiàn):

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

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

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

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

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

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

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

      猜你喜歡
      網(wǎng)絡(luò)爬蟲(chóng)搜索引擎
      煉鐵廠鐵量網(wǎng)頁(yè)數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
      基于Nutch的醫(yī)療搜索引擎的研究與開(kāi)發(fā)
      廣告主與搜索引擎的雙向博弈分析
      基于Lucene搜索引擎的研究
      搜索引擎,不止有百度與谷歌
      娄烦县| 佛山市| 靖宇县| 凤凰县| 辽源市| 黄骅市| 汽车| 阿克苏市| 博爱县| 江城| 左贡县| 昌平区| 江城| 龙海市| 井冈山市| 舒城县| 台中县| 平度市| 隆尧县| 崇阳县| 育儿| 洪洞县| 广昌县| 仪陇县| 凉山| 湟中县| 乳山市| 平罗县| 怀来县| 长葛市| 湖北省| 江孜县| 古浪县| 平定县| 澄江县| 沂南县| 五台县| 兰考县| 阿拉善左旗| 新竹市| 叙永县|