網路爬蟲簡介

2022-09-25 20:27:04 字數 3625 閱讀 7721

(1)網路爬蟲的構成及分類

網路爬蟲又被稱為做網路蜘蛛、網路機械人,主要用於網路資源的收集工作。在進行網路輿情分析時,首要獲取輿情資訊內容,這就需要用到網路爬蟲(蜘蛛程式)這個工具,它是乙個能自動提取網頁內容的程式,通過搜尋引擎從網際網路上爬取網頁位址並抓取相應的網頁內容,是搜尋引擎(search engine)的重要組成部分。

乙個典型的網路爬蟲主要組成部分如下:

1. url 鏈結庫,主要用於存放爬取網頁鏈結。

2. 文件內容模組,主要用於訪問從 web 中**的網頁內容。

3. 文件解析模組,用於解析**文件中的網頁內容,如解析 pdf,word,html 等。

4. 儲存文件的元資料以及內容的庫。

5. 規範化 url 模組,用於把 url 轉成標準的格式。

6. url 過濾器,主要用於過濾掉不需要的 url。

上述模組的設計與實現,主要是確定爬取的內容以及爬去的範圍。最簡單的例子是從乙個已知的站點抓取一些網頁,這個爬蟲用少量**就可以完成。然而在實際網際網路應用中,可能會碰到爬去大量內容需求,就需要設計乙個較為複雜的爬蟲,這個爬蟲就是n個應用的組成,並且難點是基於分布式的。

(2)網路爬蟲的工作原理

傳統網路爬蟲的工作原理是,首先選擇初始 url,並獲得初始網頁的網域名稱或 ip 位址,然後在抓取網頁時,不斷從當前頁面上獲取新的 url 放入候選佇列,直到滿足停止條件。

聚焦爬蟲(主題驅動爬蟲)不同於傳統爬蟲,其工作流程比較複雜,首先需要過濾掉跟主題不相關的鏈結,只保留有用的鏈結並將其放入候選 url 佇列。然後,根據搜尋策略從候選佇列中選擇下乙個要抓取的網頁鏈結,並重複上述過程,直到滿足終止條件為止。與此同時,將所有爬取的網頁內容儲存起來,並進行過濾、分析、建立索引等以便進行性檢索和查詢。

總體來講,網路爬蟲主要有如下兩個階段:

第一階段,url 庫初始化然後開始爬取。

第二階段,爬蟲讀取沒有訪問過的 url,來確定它的工作範圍。

其中,對於所要抓取的 url 鏈結,進行以下步驟:

1. 獲取 url 鏈結。

2. 解析內容,獲取 url 及相關資料。

3. 儲存有價值的資料。

4. 對新抓取的 url 進行規範化。

5. 過濾掉不相關的 url。

6. 將要抓取的 url 更新到 url 庫中。

7. 重複步驟2,直到終止條件為止。

(3)網路爬蟲的搜尋策略

目前,比較常見的網路爬蟲搜尋策略有以下三種:

1、廣度優先搜尋策略。其主要思想是,由根節點開始,首先遍歷當前層次的搜尋,然後才進行下一層的搜尋,依次類推逐層的搜尋。這種策略多用在主題爬蟲上,因為越是與初始 url 距離近的網頁,其具有的主題相關性越大。

2、深度優先搜尋策略。這種策略的主要思想是,從根節點出發找出葉子節點,以此類推。在乙個網頁中,選擇乙個超連結,被鏈結的網頁將執行深度優先搜尋,形成單獨的一條搜尋鏈,當沒有其他超連結時,搜尋結束。

3、最佳優先搜尋策略。該策略通過計算 url 描述文字與目標網頁的相似度,或者與主題的相關性,根據所設定的閾值選出有效 url 進行抓取。

(4)爬行演算法

資料採集的效率及覆蓋率受爬行演算法的影響,現在比較流行和經典的爬行演算法都是在best-frist演算法的基礎上改進和演化而來,各種演算法的不同之處是:對待爬的urls採用不同的啟發式規則來進行打分並排序,同時在爬行之前或在爬行過程中對演算法的引數進行優化。

1、 best-first演算法

best-first演算法通過維持乙個排序的urls優先順序佇列,通過計算主題與所抓取網頁p的cosine similarity(余弦相似度)來確定urls frontier中的urls的優先順序。

相似度計算公式如下:

2-1)

式中,q為主題,p為抓取的網頁。

best-frist爬行演算法如下:

i. 初始化,設定查詢主題(topic),初始種子結點集合(starting_urls),爬取的最大網頁數量(max_pages)以及frontier的容量限制(max_buffer);

ii. 把初始結點集合(starting_urls)中所有link插入到frontier佇列(初始為空);

iii. 迴圈(當frontier佇列非空且爬行的網頁數)

a)從frontier中取出優先順序最高的鏈結(link):link=dequeue_link_with_max_score(frontier)

b)訪問並**該link對應的頁面(doc):doc=fetch_new_page(link)

c)計算頁面與主題的相似度(score):score=sim(topic,doc)

d)抽取doc中的所有超連結(outlinks)

e)迴圈(對於頁面doc中的每乙個超連結outlink)

if(#frontier>=max_buffer)(當frontier中鏈結的數量大於等於最大限制)

then dequeue_link_with_min_score(frontier)(從frontier刪除最小優先順序鏈結)

else enqueue(frontier,outlink,score)(把鏈結和優先順序加入frontier佇列)

f)迴圈結束(完成doc中的鏈結入frontier佇列過程)

iv. 迴圈結束(結束爬行)

2、 shark search演算法

shark search演算法是hersovici等在fish-search演算法的基礎上進行了一些改進,使用向量空間模型構建查詢q與網頁、鏈結錨文字及鏈結附近文字的空間向量並計算其餘弦相似度cosine值,相似度為介於0和1之間的連續值[0,1],從而代替fish-search演算法的關鍵字及正規表示式匹配的相關性為0,1的離散值,shark search演算法同時利用了錨文字、鏈結附近文字和父頁面相關度資訊三方面的相關度線索。同fish-search演算法一樣,該演算法也設定了爬行的深度界限(depth bound)。在爬行佇列中的每乙個鏈結都關聯乙個深度界限和優先順序度量值。

深度界限由使用者設定,鏈結的優先順序值由父頁面相關性、錨文字及鏈結附近文字共同決定。具體演算法如下:

i. 初始化:設定初始節點,深度界限(d),爬行尺度(s),時限,搜尋查詢q;

ii. 設定初始節點的深度界限depth=d,並把節點插入到爬行佇列(初始為空);

iii. 迴圈(當佇列非空且**的節點數a) 計算child_node,inherited_score(child_node):

if relevance(current_node)>0 (當前節點相關)

then inherited_score(child_node)= *sim(q,current_node)

其中為預先設定的衰減因子=0.5;

else inherited_score(child_node)= *inherited_score(current_node);

b) 提取anchor_text及anchor_text_context(通過預先設定的邊界,如:1);

c) 計算錨文字的相關度值:

d) 計算錨文字的相關度值:

if anchor_score >0,

then anchor_context_score = 1

else anchor_context_score = sim(q,anchor_text_context);

其中為預設的常量等於0.8;

f) 計算孩子節點的潛在值

其中為預設的常量小於1,一般設為0.5。

iv. 迴圈結束。

網路部簡介

團總支學生會網路部簡介 一 部門介紹 網路部主要通過網路媒介,在學院師生間建立溝通交流平台,傳遞學院最新資訊,實現無紙化宣傳,是學生會的高新技術部門,其最大特點是不僅涵蓋學生會各部門的工作資訊,而且更是發布材料學院最新活動動態的平台,工作職能多元化,在學生會的工作中有不可替代的地位。二 部門職能 1...

起爆網路簡介

工程爆破中採用的起爆網路按起爆方法可分為電力起爆網路 導爆管起爆網路 導爆索起爆網路及混合起爆網路等。電力起爆法與導爆管起爆法均可以對群藥包一次賦能起爆,並根據工程要求,達到準爆 齊爆或微差起爆的目的。電力起爆網路其準爆性可進行檢查,但該起爆網路需防外電場的干擾 導爆管起爆網路不受外電場干擾,比較安...

商盟網路簡介

金華商盟電子商務 是一家資訊科技服務與網際網路專業服務企業,公司崇尚以人為本 客戶為中心,銳意創業,並以運用網際網路提公升公眾生活質量 企業競爭力和區域經濟發展為使命,致力於網路 電子商務平台和網路應用技術服務等網際網路綜合業務,並正向電信增值服務領域逐步拓展。公司以 網路 商務平台 技術服務 傳統...