• 
    

    
    

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

      淺談網(wǎng)絡(luò)爬蟲設(shè)計

      2019-03-20 05:18:14雷才峰田仁杰王建鋒
      西部論叢 2019年10期
      關(guān)鍵詞:源文件爬蟲哈希

      雷才峰 田仁杰 王建鋒

      摘 要:網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機器人,在FOFA社區(qū)中間,更經(jīng)常被稱為網(wǎng)頁追逐者)是一種按照一定的規(guī)則,自動的抓取萬維網(wǎng)信息的程序或者腳本。本文從網(wǎng)絡(luò)爬蟲的介紹出發(fā), 闡述了網(wǎng)絡(luò)爬蟲的搜索策略以及相關(guān)算法,包括頁面解析,重復鏈接分析,以及多線程等等

      關(guān)鍵詞:搜索引擎 網(wǎng)絡(luò)爬蟲

      一、引言

      隨著信息時代的到來,網(wǎng)絡(luò)飛速發(fā)展,規(guī)模無限擴大,信息量呈爆炸式的增長。網(wǎng)絡(luò)給人們帶來了豐富和動態(tài)的網(wǎng)絡(luò)信息,但是因為Internet上的信息是極其分散,無序,毫無規(guī)則。所以很難被利用。因此如何在 Internet 這個巨大的信息海洋中快速并且準確的找到有用的信息,是 Internet 用戶的所共同面對的難題。而網(wǎng)絡(luò)搜索引擎的出現(xiàn)則解決了這一困難,加強了Internet用戶定位和收集網(wǎng)絡(luò)信息的能力,引擎通過收集眾多網(wǎng)絡(luò)站點上的網(wǎng)絡(luò)信息來為幫助用戶更方便的尋找所需信息。而在整個搜索引擎中,網(wǎng)絡(luò)爬蟲起著重要的作用,它是整個搜索引擎的數(shù)據(jù)來源,爬蟲設(shè)計的好壞直接決定著整個引擎系統(tǒng)的內(nèi)容是否豐富,信息能否得到及時的更新。

      二、網(wǎng)絡(luò)爬蟲的種類

      幾年來隨著對網(wǎng)絡(luò)爬蟲的不斷研究與探索,備種各樣的爬蟲層出不窮。現(xiàn)在常見的優(yōu)秀網(wǎng)給爬蟲有:批量型網(wǎng)絡(luò)爬蟲、增量型網(wǎng)絡(luò)爬蟲、通用網(wǎng)絡(luò)爬蟲、垂直網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲。這幾種爬蟲功能不一,使用的領(lǐng)域也不同。比如谷歌、百度等大型搜索引擎都是非常典型的增量型網(wǎng)絡(luò)爬蟲,可以提供非常大量的數(shù)據(jù)。而如淘寶、蘇寧易購等店鋪進行爬取就需要用到批量型網(wǎng)絡(luò)爬蟲,它們經(jīng)常會對各種內(nèi)容設(shè)限或屏蔽防止外來的爬取。

      三、網(wǎng)絡(luò)爬蟲的基本原理

      網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從Internet 上下載網(wǎng)頁,是搜索引擎的重要組成。爬蟲從一個或若干初始網(wǎng)頁的URL開始,通過分析該URL的源文件,提取出新的網(wǎng)頁鏈接,繼而通過這些鏈接繼續(xù)尋找新的鏈接,這樣一直循環(huán)下去,直到抓取并分析完所有的網(wǎng)頁為止。當然這是理想狀態(tài)下爬蟲的執(zhí)行過程,但是實際上要抓取Internet上所有的網(wǎng)頁是不可能完成的。從目前公布的數(shù)據(jù)來看,最好的搜索引擎也只不過抓取了整個 Internet40%的網(wǎng)頁。這有兩個原因,其一是網(wǎng)絡(luò)爬蟲設(shè)計時的抓取技術(shù)瓶頸造成的,無法遍歷所有的網(wǎng)頁,很多網(wǎng)頁鏈接不能從其他網(wǎng)頁中得到。其二是存儲技術(shù)和處理技術(shù)造成的,如果按照每個頁面的平均的大小是 20K,那么 100 億個頁面的大小就是200000G,對于現(xiàn)在的存儲技術(shù)來說是個挑戰(zhàn)。

      四、 網(wǎng)絡(luò)爬蟲的爬行策略

      網(wǎng)絡(luò)爬蟲的爬行策略可以分成深度優(yōu)先和廣度優(yōu)先。

      (一)深度優(yōu)先策略:其本質(zhì)就是將網(wǎng)頁鏈接按照深度由低到高的順序依次進行爬取直到最底層為止。通俗點講就是“一條道走到黑”,當一條路完全走完后再去返回來去走另條道。這種策略作為早期最為流行的算法比較適合于垂直搜索等需要深度搜索的引擎,但又因為往往會爬取的過深會而耗時耗力產(chǎn)生大量的浪費。

      (二)廣度優(yōu)先策略:廣度優(yōu)先策略又被稱為寬度優(yōu)先策略。其原理就是從個初始點出發(fā),將所有檢測到的路徑全部都訪間一遍,每當全部路徑都訪問結(jié)束卻沒有發(fā)現(xiàn)目標時,那么就會把所有走兩步可以到達的位置全部訪問一遍。如果任然沒有發(fā)現(xiàn)目標,就以此類推將所有走三步可以達到的位置全部訪問一遍。這種方法聽起來非常的笨,而且極為的耗時,但可以保證一定能找到一條最短路徑。

      五、爬蟲的具體實現(xiàn)

      (一)基本流程。

      如果是第一次運行,爬蟲根據(jù)編碼過程中給定的起始網(wǎng)頁,開始分析網(wǎng)頁源文件,把分析出來的鏈接放進待爬取隊列,把已經(jīng)處理過的原始網(wǎng)頁放進已爬行隊列,并根據(jù)網(wǎng)頁鏈接在哈希表中添加一個新元素,然后各個工作線程從待爬行

      隊列中取出鏈接繼續(xù)分析,提取鏈接,把提取出的新鏈接與哈希表中已存在的元素進行對比,如果已在哈希表中存在,則放棄該鏈接,如果不存在,則在哈希表中生成一個新元素,并且把該鏈接放入待爬行隊列,然后工作線程繼續(xù)取出鏈接進行爬行這樣一直循環(huán)下去,直到滿足系統(tǒng)停止條件,如果系統(tǒng)運行期間人為的關(guān)閉了系統(tǒng),則系統(tǒng)會自動在關(guān)閉時把相關(guān)記錄保存到文本文件中。如果系統(tǒng)不是第一次運行,則在啟動系統(tǒng)后,系統(tǒng)不是分析編碼過程中指定的起始網(wǎng)頁,而是先讀取保存在文本文件中的信息,然后生成和上一次運行時同樣的哈希表,待爬行隊列,已爬行隊列,然后從待爬行對列中取出鏈接執(zhí)行。

      (二)爬蟲主要數(shù)據(jù)結(jié)構(gòu)。

      1. CHashTable類:這個類根據(jù)一定的算法為每一個鏈接(鏈接對應的網(wǎng)址)生成一個唯一對應的數(shù)字,然后把這個數(shù)字作為該鏈接在哈希表中的位置,并把該位置的值設(shè)置為 1,表示該位置已經(jīng)有一個鏈接對應了。當有新的鏈接要放入哈希表中時,則只需檢查新鏈接所對應的哈希表中的位置的值,如果為 0 則表示該鏈接以前未出現(xiàn),如果為 1則表示是重復鏈接,不需要處理了。

      2. CURLParse類:該類主要負責得到鏈接的源文件,并從中提取出源文件中的所有鏈接,然后把不重復的鏈接放入到待爬行隊列中去,供工作線程使用。在提取源文件鏈接的過程中,本系統(tǒng)沒有使用正則表達式,而是直接利用 CString 類來尋找鏈接,個人覺得這樣操作的準確性更高。由于提取出來的鏈接很多都不完整,而是相對路徑,因此,還需要對此類鏈接進行一些操作,使其變成完整路徑后才能放入待爬行隊列。

      3.CURLQueue 類:該類用來存儲待爬行鏈接和已爬行鏈接,并提供了一些可以操作隊列的接口以及一些返回隊列相關(guān)信息的接口。

      4. URLStruct 結(jié)構(gòu)體:該結(jié)構(gòu)體用來控制系統(tǒng)的執(zhí)行層級。如果某個鏈接的層級為 1,則由它分析出的鏈接的層級為 2。當鏈接的層級大于系統(tǒng)設(shè)定的層級時,就不對此鏈接做任何處理,既不從該鏈接中提取新的鏈接。

      五、系統(tǒng)運行

      操作系統(tǒng)Windows7及以上。但是根據(jù)實際使用情況,建議使用Windows10。因為Windows10做為目前主流的操作系統(tǒng)具有更好的服務器性能、更強的安全性、更輕的管理工作負擔。

      參考文獻

      [1] 孟時,王彥,larbin網(wǎng)絡(luò)爬蟲的體系結(jié)構(gòu)[J]. 電腦學習,2010

      [2] 高波,Linux網(wǎng)絡(luò)編程[M]. 程序設(shè)計2000

      [3] 王芳,陳海建 深入解析Web主題爬蟲的關(guān)鍵性原理[J]. 微型電腦應用,2011

      猜你喜歡
      源文件爬蟲哈希
      利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
      基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
      網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應用
      基于源文件可疑度的軟件缺陷定位方法研究
      利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
      電子測試(2018年1期)2018-04-18 11:53:04
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      LKJ基礎(chǔ)數(shù)據(jù)源文件自動編制系統(tǒng)的研究
      基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
      基于維度分解的哈希多維快速流分類算法
      計算機工程(2015年8期)2015-07-03 12:20:04
      誤寫C源文件擴展名為CPP的危害
      广西| 莎车县| 新郑市| 南华县| 天峨县| 陵川县| 法库县| 平潭县| 舒兰市| 四子王旗| 乌拉特后旗| 普格县| 西安市| 渭南市| 江安县| 金川县| 萨嘎县| 那曲县| 都匀市| 佛冈县| 江北区| 贺州市| 雅江县| 崇仁县| 泽州县| 河源市| 翁源县| 利川市| 滨州市| 衢州市| 恭城| 彭山县| 当涂县| 花莲市| 东阿县| 五华县| 剑阁县| 梅河口市| 锦屏县| 安泽县| 寿光市|