91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

WEBCRAWLER 網(wǎng)絡爬蟲實訓項目 1 WEBCRAWLER 網(wǎng) 絡 爬 蟲 實 訓 項 目 文檔版本: 1.0.0.1 編寫單位: 達內(nèi)IT培訓集團 C++教學研發(fā)部 編寫人員: 閔衛(wèi) 定稿日期: 2015年11月20日 星期五WEBCRAWLER 網(wǎng)絡爬蟲實訓項目 2 1. 項目概述 互聯(lián)網(wǎng)產(chǎn)品形形色色,有產(chǎn)品導向的,有營銷導向的,也有技術導向的,但是 以技術見長的互聯(lián)網(wǎng)產(chǎn)品比例相對小些。搜索引擎是目前互聯(lián)網(wǎng)產(chǎn)品中最具技 術含量的產(chǎn)品,如果不是唯一,至少也是其中之一。 經(jīng)過十幾年的發(fā)展,搜索引擎已經(jīng)成為互聯(lián)網(wǎng)的重要入口之一,Twitter聯(lián)合創(chuàng) 始人埃文?威廉姆斯提出了“域名已死論”,好記的域名不再重要,因為人們會 通過搜索進入網(wǎng)站。搜索引擎排名對于中小網(wǎng)站流量來說至關重要。了解搜索 引擎簡單界面背后的技術原理其實對每一個希望在互聯(lián)網(wǎng)行業(yè)有所建樹的信息 技術人員都很重要。 1.1. 搜索引擎 作為互聯(lián)網(wǎng)應用中最具技術含量的應用之一,優(yōu)秀的搜索引擎需要復雜的架構 和算法,以此來支撐對海量數(shù)據(jù)的獲取、 存儲,以及對用戶查詢的快速而準確 地響應。 從架構層面,搜索引擎需要能夠對以百億計的海量網(wǎng)頁進行獲取、 存 儲、 處理的能力,同時要保證搜索結果的質量。 如何獲取、 存儲并計算如此海WEBCRAWLER 網(wǎng)絡爬蟲實訓項目 3 量的數(shù)據(jù)?如何快速響應用戶的查詢?如何使得搜索結果盡可能滿足用戶對信 息的需求?這些都是搜索引擎的設計者不得不面對的技術挑戰(zhàn)。 下圖展示了一個通用搜索引擎的基本結構。商業(yè)級別的搜索引擎通常由很多相 互獨立的模塊組成,各個模塊只負責搜索引擎的一部分功能,相互配合組成完 整的搜索引擎: 搜索引擎的信息源來自于互聯(lián)網(wǎng)網(wǎng)頁,通過“網(wǎng)絡爬蟲” 將整個“互聯(lián)網(wǎng)” 的 信息獲取到本地,因為互聯(lián)網(wǎng)頁面中有相當大比例的內(nèi)容是完全相同或者近似 重復的,“網(wǎng)頁去重”模塊會對此做出檢測,并去除重復內(nèi)容。 在此之后,搜索引擎會對網(wǎng)頁進行解析,抽取網(wǎng)頁主體內(nèi)容,以及頁面中包含 的指向其它頁面的所謂超鏈接。 為了加快用戶查詢的響應速度,網(wǎng)頁內(nèi)容通過 “倒排索引”這種高效查詢數(shù)據(jù)結構來保存,而網(wǎng)頁之間的鏈接關系也會予以 保存。之所以要保存鏈接關系,是因為這種關系在網(wǎng)頁相關性排序階段是可利 用的,通過“鏈接分析”可以判斷頁面的相對重要性,對于為用戶提供準確的 搜索結果幫助很大。 由于網(wǎng)頁數(shù)量太多,搜索引擎不僅需要保存網(wǎng)頁的原始信息,還要保存一些中 間處理結果,使用單臺或者少量的計算機明顯是不現(xiàn)實的。 Google等商業(yè)搜索 引擎提供商,為此開發(fā)了一整套云存儲與云計算平臺,使用數(shù)以萬計的普通PCWEBCRAWLER 網(wǎng)絡爬蟲實訓項目 4 搭建了海量信息的可靠存儲與計算架構,以此作為搜索引擎及其相關應用的基 礎支撐。優(yōu)秀的云存儲與云計算平臺已經(jīng)成為大型商業(yè)搜索引擎的核心競爭 力。 以上所述是搜索引擎如何獲取并存儲海量的網(wǎng)頁相關信息。這些功能因為不需 要實時計算,所以可以被看作是搜索引擎的后臺計算系統(tǒng)。搜索引擎的首要目 標當然是為用戶提供準確而全面的搜索結果,因此響應用戶查詢并實時提供準 確結果便構成了搜索引擎的前臺計算系統(tǒng)。 當搜索引擎接收到用戶的查詢請求后,首先需要對查詢詞進行分析,通過與用 戶信息的結合,正確推導出用戶的真實搜索意圖。 此后,先在“Cache系統(tǒng)” 所維護的緩存中查找。搜索引擎的緩存存儲了不同的搜索意圖及其相對應的搜 索結果。如果在緩存中找到滿足用戶需求的信息,則直接將搜索結果返回給用 戶。這樣既省掉了重復計算對資源的消耗,又加快了整個搜索過程的響應速 度。而如果在緩存中沒有找到滿足用戶需求的信息,則需要通過“網(wǎng)頁排 序”,根據(jù)用戶的搜索意圖,實時計算哪些網(wǎng)頁是滿足用戶需求的,并排序輸 出作為搜索結果。 而網(wǎng)頁排序最重要的兩個參考因素,一個是“內(nèi)容相似 性”,即哪些網(wǎng)頁是和用戶的搜索意圖密切相關的;一個是網(wǎng)頁重要性,即哪 些網(wǎng)頁是質量較好或相對重要的,而這往往可以從“鏈接分析”的結果中獲 得。綜合以上兩種考慮,前臺系統(tǒng)對網(wǎng)頁進行排序,作為搜索的最終結果。 除了上述功能模塊,搜索引擎的“反作弊”模塊近年來越來越受到重視。搜索 引擎作為互聯(lián)網(wǎng)用戶上網(wǎng)的入口,對于網(wǎng)絡流量的引導和分流至關重要,甚至 可以說起著決定性的作用。因此,各種“作弊”方式也逐漸流行起來,通過各 種手段將網(wǎng)頁的搜索排名提前到與其網(wǎng)頁質量不相稱的位置,這會嚴重影響用 戶的搜索體驗。所以,如何自動發(fā)現(xiàn)作弊網(wǎng)頁并對其給于相應的懲罰,就成了 搜索引擎非常重要的功能之一。 1.2. 網(wǎng)絡爬蟲 通用搜索引擎的處理對象是互聯(lián)網(wǎng)網(wǎng)頁,截至目前的網(wǎng)頁數(shù)量數(shù)以百萬計,所 以搜索引擎首先面臨的問題就是如何能夠設計出高效的下載系統(tǒng),將如此海量 的網(wǎng)頁數(shù)據(jù)傳送到本地,在本地形成互聯(lián)

資源截圖

代碼片段和文件信息

///?@file?DomainLimit.cpp
///?@brief?實現(xiàn)#DomainLimit類
///?@author?閔衛(wèi)
///?@date?2015年11月20日
///?@version?1.0.0.1

#include?“Precompile.h“
#include?“WebCrawler.h“
#include?“DomainLimit.h“
#include?“PluginMngr.h“
#include?“StrKit.h“

DomainLimit?g_pluginDomainLimit;?//?域名限制插件對象
WebCrawler*?g_app;???????????????//?應用程序對象

//?插件初始化
//?成功返回true,失敗返回false
//?根據(jù)域名限制插件的功能實現(xiàn)基類中的虛函數(shù)
bool?DomainLimit::init?(
WebCrawler*?app?//?[輸入/輸出]?應用程序對象
)?{
//?以統(tǒng)一資源定位符插件的身份
//?注冊到應用程序對象的插件管理器中
(g_app?=?app)->m_pluginMngr.registerUrlPlugin?(this);

//?拆分配置器中的包含前綴字符串,以逗號為分隔符,不限拆分次數(shù)
m_includePrefixes?=?StrKit::split?(
g_app->m_cfg.m_includePrefixes?““?0);
//?拆分配置器中的排除前綴字符串,以逗號為分隔符,不限拆分次數(shù)
m_excludePrefixes?=?StrKit::split?(
g_app->m_cfg.m_excludePrefixes?““?0);;

//?返回成功
return?true;
}

//?插件處理
//?成功返回true,失敗返回false
//?根據(jù)域名限制插件的功能實現(xiàn)基類中的虛函數(shù)
bool?DomainLimit::handler?(
void*?arg?//?[輸入/輸出]?插件參數(shù)
)?{
//?原始統(tǒng)一資源定位符
RawUrl*?rawUrl?=?static_cast?(arg);

//?若是種子鏈接(鏈接深度為0)或非超文本標記語言
if?(!?rawUrl->m_depth?||?rawUrl->m_type?!=?RawUrl::ETYPE_HTML)
//?返回成功,抓取該統(tǒng)一資源定位符
return?true;

//?字符串向量只讀迭代器
vector::const_iterator?it;

//?統(tǒng)一資源定位符字符串以哪個包含前綴開頭
for?(it?=?m_includePrefixes.begin?();
it?!=?m_includePrefixes.end?()?&&
rawUrl->m_strUrl.find?(*it?0);?++it);

//?若沒有與統(tǒng)一資源定位符字符串匹配的包含前綴
if?(!?m_includePrefixes.empty?()?&&
it?==?m_includePrefixes.end?())?{
//?記錄警告日志
g_app->m_log.printf?(Log::LEVEL_WAR?__FILE__?__LINE__
“不抓不在包含集\“%s\“中的統(tǒng)一資源定位符\“%s\““
g_app->m_cfg.m_includePrefixes.c_str?()
rawUrl->m_strUrl.c_str?());
//?返回失敗,不抓該統(tǒng)一資源定位符
return?false;
}

//?統(tǒng)一資源定位符字符串以哪個排除前綴開頭
for?(it?=?m_excludePrefixes.begin?();
it?!=?m_excludePrefixes.end?()?&&
rawUrl->m_strUrl.find?(*it?0);?++it);

//?若存在與統(tǒng)一資源定位符字符串匹配的排除前綴
if?(it?!=?m_excludePrefixes.end?())?{
//?記錄警告日志
g_app->m_log.printf?(Log::LEVEL_WAR?__FILE__?__LINE__
“不抓排除集\“%s\“中的統(tǒng)一資源定位符\“%s\““
g_app->m_cfg.m_excludePrefixes.c_str?()
rawUrl->m_strUrl.c_str?());
//?返回失敗,不抓該統(tǒng)一資源定位符
return?false;
}

//?返回成功,抓取該統(tǒng)一資源定位符
return?true;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????138568??2016-10-30?13:45??WebCrawler\bin\WebCrawler

?????文件????????598??2016-10-28?06:31??WebCrawler\bin\WebCrawler.cfg

?????文件????????886??2015-12-01?01:22??WebCrawler\bin\WebCrawler.scr

?????文件?????472251??2011-11-07?15:31??WebCrawler\docs\cpp_ref.chm

?????文件??????59508??2016-12-24?22:51??WebCrawler\docs\cpp_ref.chw

?????文件?????124881??2011-11-08?01:56??WebCrawler\docs\cpp_ref_ch.chm

?????文件?????467595??2016-10-29?22:23??WebCrawler\makefile.pdf

?????文件???????2908??2016-10-28?01:02??WebCrawler\plugins\DomainLimit.cpp

?????文件????????877??2016-10-27?10:51??WebCrawler\plugins\DomainLimit.h

?????文件????????246??2016-10-27?10:51??WebCrawler\plugins\DomainLimit.mak

?????文件??????55864??2016-10-30?13:45??WebCrawler\plugins\DomainLimit.o

?????文件??????43211??2016-10-30?13:45??WebCrawler\plugins\DomainLimit.so

?????文件???????2511??2016-10-28?01:15??WebCrawler\plugins\HeaderFilter.cpp

?????文件????????822??2016-10-27?10:51??WebCrawler\plugins\HeaderFilter.h

?????文件????????248??2016-10-27?10:51??WebCrawler\plugins\HeaderFilter.mak

?????文件??????16832??2016-10-30?13:45??WebCrawler\plugins\HeaderFilter.o

?????文件??????19791??2016-10-30?13:45??WebCrawler\plugins\HeaderFilter.so

?????文件???????1531??2016-10-28?01:21??WebCrawler\plugins\MaxDepth.cpp

?????文件????????708??2016-10-27?10:51??WebCrawler\plugins\MaxDepth.h

?????文件????????738??2016-10-27?10:51??WebCrawler\plugins\MaxDepth.mak

?????文件???????9056??2016-10-30?13:45??WebCrawler\plugins\MaxDepth.o

?????文件?????198653??2016-10-30?13:45??WebCrawler\plugins\MaxDepth.so

?????文件????????305??2016-10-27?10:53??WebCrawler\plugins\mkall

?????文件???????2443??2016-10-28?01:41??WebCrawler\plugins\SaveHTMLToFile.cpp

?????文件????????807??2016-10-27?10:51??WebCrawler\plugins\SaveHTMLToFile.h

?????文件????????252??2016-10-27?10:51??WebCrawler\plugins\SaveHTMLToFile.mak

?????文件??????12096??2016-10-30?13:45??WebCrawler\plugins\SaveHTMLToFile.o

?????文件??????19199??2016-10-30?13:45??WebCrawler\plugins\SaveHTMLToFile.so

?????文件???????5083??2016-10-29?12:05??WebCrawler\plugins\SaveImageToFile.cpp

?????文件????????768??2016-10-27?10:51??WebCrawler\plugins\SaveImageToFile.h

............此處省略66個文件信息

評論

共有 條評論