亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        雷才峰 田仁杰 王建鋒

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

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

        一、引言

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

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

        幾年來隨著對(duì)網(wǎng)絡(luò)爬蟲的不斷研究與探索,備種各樣的爬蟲層出不窮?,F(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ù)。而如淘寶、蘇寧易購等店鋪進(jìn)行爬取就需要用到批量型網(wǎng)絡(luò)爬蟲,它們經(jīng)常會(huì)對(duì)各種內(nèi)容設(shè)限或屏蔽防止外來的爬取。

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

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

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

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

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

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

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

        (一)基本流程。

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

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

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

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

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

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

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

        五、系統(tǒng)運(yùn)行

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

        參考文獻(xiàn)

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

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

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

        猜你喜歡
        源文件爬蟲哈希
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應(yīng)用
        基于源文件可疑度的軟件缺陷定位方法研究
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        LKJ基礎(chǔ)數(shù)據(jù)源文件自動(dòng)編制系統(tǒng)的研究
        基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
        基于維度分解的哈希多維快速流分類算法
        誤寫C源文件擴(kuò)展名為CPP的危害
        天天射综合网天天插天天干| 亚洲AV成人无码国产一区二区| 欧美韩国精品另类综合| 日韩av一区二区三区精品| 久亚洲一线产区二线产区三线麻豆| 91伦理片视频国产精品久久久| 欧美精品videosex极品| 性久久久久久久| 成人无码无遮挡很H在线播放| 黄色三级一区二区三区| 女同三级伦理在线观看| 久久久亚洲欧洲日产国码aⅴ| 国产成人精品一区二区不卡| 91精品国产福利尤物免费| 熟女丝袜美腿亚洲一区二区三区| 青青草手机免费播放视频| 久久精品国产亚洲av久| 无码少妇一区二区浪潮av| 在线精品日韩一区二区三区| 在线免费观看亚洲毛片| 精品久久综合日本久久综合网| 中文字幕人成乱码熟女| 免费看泡妞视频app| 亚洲av高清在线观看三区| 国产毛片精品一区二区色| 中文字幕一区二区中出后入| 中国老熟女重囗味hdxx| 亚洲精品夜夜夜| 日韩精品极品视频在线免费| 99精品国产综合久久麻豆| 亚洲色中文字幕无码av| 国产又黄又猛又粗又爽的a片动漫| 久久亚洲精彩无码天堂| 日本一区二区三区丰满熟女| 精品无码人妻夜人多侵犯18| 毛片大全真人在线| 911国产在线观看精品| 最好的99精品色视频大全在线| 国产人成视频在线视频| 毛多水多www偷窥小便| 精品人妻丰满久久久a|