网络信息检索(三)Web信息搜集
文章目錄
- 一、Web簡介
- 1、Web三要素
- (1)HTML的基本結構
- (2)資源標識符
- (3)傳輸協議HTTP/HTTPS
- (i)常用方法
- (ii)HTTP響應狀態碼
- 2、Web文檔
- 3、入度和出度
- 3、Web文檔的統計特征
- (1)冪律分布(Power Law)
- (2)蝴蝶結結構(Bow Tie Structure)
- (3)小世界(Small World)
- 二、網絡信息搜集的基本原理
- 1、如何提取新的鏈接--HTML解析,鏈接抽取
- (1)鏈接規范化
- (2)錨點文本的提取
- 2、如何將鏈接加到隊列--搜索策略
- 3、如何檢測一些頁面已經被訪問過?(Web是圖而不是樹)
- (1)節省資源:避免“同義”地址
- (2)如何避免web網頁重復?
- (i) Web頁面重復的情形
- (ii)消除已經訪問過的URL
- (iii)消除URL不同,但是內容相似的網頁--Simhash算法
- 4、如何限制只采集特定類型(文本、圖像)的頁面?
- 三、網絡信息搜集的禮貌原則
- 1、機器人排斥協議--其一:Robots Exclusion Protocol
- (1)Robots.txt文件
- (2)Robot排除協議實例
- (3)網站地圖
- 2、機器人排斥協議--其二:Robots META Tag
- 3、采集數據所遵守的禮貌策略
- 4、為每個Web服務器建立一個工作隊列(避免自己成為DoS攻擊)
- 四、例子程序(Python3)--寫了再填
- 1、主要結構
- 2、完整程序
- 五、高性能信息搜集
- 1、信息收集的復雜性
- 2、需要高性能的Crawler
- 3、多個并發的抓取
- 4、需要考慮的問題
一個完整的IR系統:
與傳統IR模型的差別就在于爬蟲+Web的部分,只有通過在Web上不斷搜集信息,才能不斷的完善我們網絡信息檢索的能力。
一、Web簡介
- Web信息搜集(Web Crawling):指通過Web頁面之間的鏈接關系從Web上自動獲取頁面信息,并且隨著鏈接不斷向所需要的Web頁面擴展的過程,信息搜集系統也常常稱為Robot, Spider, Crawler等
- 信息搜集是網絡信息檢索系統獲得數據來源的過程,地位相當重要
- 信息搜集的目標:快速獲得高質量的網頁——快+高質量
1、Web三要素
- 資源(Resources): ?超文本的概念表示,如 HTML(HyperText Markup Language
- 資源標識(Resource identifiers): ?用來定位資源的唯一性命名機制,如 URL
- 傳輸協議(Transfer protocols): ?瀏覽器(Web用戶代理)和服務器之間通信的規范,如HTTP
下面的內容為WEB基礎,涉及一些計算機網絡知識,有基礎的其實可以跳。
(1)HTML的基本結構
? 一個HTML文檔可以分為文檔頭( head)和文檔體(body),前者在<HEAD>和 </HEAD>之間,后者在<BODY> 和</BODY>之間
? 文檔的題目(title )顯示在頭部
? 文檔的內容( content )顯示在文檔體內,文檔體可以分為段落,用 <P>分割
? 超鏈接(Hyperlink) <a href="relations/alumni">alumni</a>。鏈接是一個Web資源到另一個資源的(有方向的)鏈接,中間的文字成為錨文本( anchor)。錨文本對信息檢索是非常重要的,因為它是對網頁的一個高度抽象,可以作為我們對該網頁的索引詞。
(2)資源標識符
? URL(Uniform Resource Locators)語法: <protocol>://<hostname><path>?<query>#<fragment>。?代表后面是一個查詢,可以獲得一些變量值。#可以對網頁進行重定位。
? 查詢(query)從HTML表格中傳遞變量 <variable>=<value>&<variable>=<value>…
? 片段( fragment)也稱為指向( reference )同一個文
檔內的指針 <<A NAME=“<fragment>”>
? 絕對URL,指明完整的資源定位路徑
? 相對URL,只是相對的資源定位信息
(3)傳輸協議HTTP/HTTPS
HTTP是Hypertext Transfer Protocol,超文本傳輸協議的縮寫,主要使用了TCP技術(TCP三次握手建立連接),他有如下的一些方法。
(i)常用方法
(ii)HTTP響應狀態碼
- 1XX: Informational 100 Continue, 101 Switching Protocols- 2XX: Success 200 OK, 206 Partial Content- 3XX: Redirection 301 Moved Permanently, 304 Not Modified- 4XX: Client error 400 Bad Request, 403 Forbidden, 404 Not Found- 5XX: Server error 500 Internal Server Error, 503 Service Unavailable, 505 HTTP Version Not Supported2、Web文檔
- 最常見的格式是HTML,其次是圖片(GIF、JPG、PNG)、視頻(MPG)、聲音(MP3)等
- Web頁面通常很小,約幾十KB~幾百KB
- 據2010年Google發布的網頁統計報告: 網頁的平均容量是320KB(包含網頁里內嵌的腳本、圖片、CSS),網頁文本內容平均為37KB,每張網頁里平均包含29.39個圖片、 7.09個外部腳本和3.22個外部CSS,平均圖片大小205.99KB ,腳本57.98KB,CSS18.72KB
- Web頁面并不完全遵守標準規范
3、入度和出度
- 入度(indegree) :一個網頁被其他網頁指向的個數
- 用Web圖的觀點來看,把以某個節點(網頁)為終點的邊的條數稱為該節點的入度
- 出度(outdegree) :一個網頁指向其他網頁的個數。用web圖的觀點來看,把以某個節點(網頁)為起點的邊的條數稱為該節點的出度
- 一般來說,入度大的網頁較權威,這決定了我們是否爬取這個網頁的傾向。
3、Web文檔的統計特征
(1)冪律分布(Power Law)
橫坐標是入度/出度,縱坐標是擁有該入度/出度的頁面個數。
(2)蝴蝶結結構(Bow Tie Structure)
從宏觀上看,web網頁被聚合成4類:
- 強互連部件( Strongly Connected Component, SCC ):該類web頁能夠通過鏈接互相通達,具有小世界特性,平均16~20個連接(28%)
- IN:該類web頁都有有向路徑到達SCC(21%)
- OUT:該類web頁能從SCC出發到達(21%)
- 觸須或管道(Tendrils or Tubes ):能從IN出發到達,或從自身出發,到達OUT (22%) ? 每類的大小基本差不多:5000萬個節點
- 還有一些孤立部件(Disconnected ):很少和別的網頁有連接的(8%)
(3)小世界(Small World)
- 社交直徑:托付鏈長度不會超過6,著名的六度(six degree)分割理論
- Web圖的直徑相對于整個Web圖來說,是很小的
二、網絡信息搜集的基本原理
問題1:在Web上沒有所有URL的目錄
解決方法:
?從一個給定的URL集合開始爬行搜索
?遞歸地沿著所有這些網頁鏈接,發現新網頁
?對新發現的網頁進行處理和索引
?繼續……
但不能保證所有的Web網頁可用這種方法獲得
問題2:怎樣獲得高質量的網頁?
- 減少重復頁面的采集
?URL重復的檢測和排除
?內容重復的檢測和排除 - 保證重要頁面的高優先級
?入度高的網頁相對重要
?URL淺的網頁相對重要
?含有被別人廣泛映像的內容的網頁重要
1、如何提取新的鏈接–HTML解析,鏈接抽取
(1) 必須發現一個網頁中的所有鏈接和抽取出URLs
<a href="http://www.cs.unt.edu/~rada/CSCE">, <frame src="site-index.html">
(2) 常用超鏈接類型
- 文字超鏈接:<a href="所要鏈接的地址" target="_blank">錨文本</a>
- 圖片超鏈接:<a href="所要鏈接的地址" target="_blank"><img scr="圖片地址URL“ width="寬度” height="高度" alt="圖片說明“ border="0“ > </a>
(1)鏈接規范化
(2)錨點文本的提取
- 通常在提取鏈接時,抽取出每個超鏈的錨點文本 (在標簽<a>和</a>之間)
- 錨點文本(anchor text)常常是它指向的文檔的描述,在目標網頁的內容中增加錨點文本,以提供相關的關鍵詞索引
- 可以賦予錨點文本更高的權重
- 當目標網頁的描述性文本嵌在圖像log中時,很有幫助,但有的時候,錨點文字沒有用:如:“click here”
2、如何將鏈接加到隊列–搜索策略
- 深度優先
- 寬度優先(一般寬度優先搜索可以更快的采集到的大量的高質量網頁)
新的URL如何加入決定了搜索策略
? 先進先出FIFO (append to end of Q)決定了寬度優先搜索。 寬度優先從根網頁統一地向外搜索,但需要存儲前一層次的所有節點(隨深度呈指數增長),這是常用的蜘蛛搜索策略
? 后進先出LIFO (add to front of Q)決定了深度優先搜索
? 深度優先只需要較少的存儲空間(深度的線性增長),但是可能會迷航
? 啟發式的Q排序方式形成專題搜集(focused crawler),會將crawler導向感興趣的網頁
3、如何檢測一些頁面已經被訪問過?(Web是圖而不是樹)
(1)節省資源:避免“同義”地址
- IP地址和域名之間的多對多關系
?大規模網站用于負載平衡的技術:內容鏡像
?虛擬主機“virtual hosting”和“Proxy pass”:不同的主機名映射到同一個IP地址,發布多個邏輯網站的需要(Apache支持)
? 可能造成重復搜集
?可能是虛擬主機,多個域名共一個IP,內容不同
? www.scut.edu.cn , www2.scut.edu.cn -> 202.38.193.188
?可能是DNS輪轉 (Round Robin),一個域名對應多個IP (為了負載均衡)
? ent.sina.com.cn -> 121.194.0.203, 121.194.0.205(~210)
?可能是一個站點有多個域名對應
? www.scut.edu.cn和webserver.scut.edu.cn等價
(2)如何避免web網頁重復?
(i) Web頁面重復的情形
? 已經訪問過
? 鏡像網頁
? 域名和IP的多重對應關系
- 必須探測什么時候再次抓取一個頁面 (web是一個有向圖,不是一根樹)
- 必須高效地索引抓回的網頁,以便快速地識別
? 通過Tree索引或哈希表(hash table)
? 使用URL(需規范化)或文本內容作為鍵值(Key)的索引頁面
(ii)消除已經訪問過的URL
- 檢查某個URL是否已經被抓過了
?在將一個新的URL (規范化后的)放到工作池之前
?要很快,不要在這里形成性能瓶頸(檢查將要訪問磁盤)
?符合條件(即未被訪問過)的URLs放到crawler的任務中 - 優化方法
?URL用數字指紋(fingerprint)來記錄,減少內存開銷
?利用訪問的時空局部性—緩存(Cache)
(iii)消除URL不同,但是內容相似的網頁–Simhash算法
- 為文檔中每個詞創建一個長度為b比特的哈希值,每個詞的哈希值必須是唯一的
- 創建文檔矢量V:V的每維的值是文檔所有詞在該維的比特值得加權和,如果某詞在該維得比特值為1,則加上該詞得詞頻,如果為0,則減去該詞的詞頻(比如tropical在1號位置是0,因此他對最后結果的第一位,貢獻為-2–他的詞頻的負數)
- 歸一化矢量V:如果某維的比特值大于1,則設為1,如果小于0,則設為0
在16億網頁上實驗, b = 384 (48 bytes/per page),即使這樣每個網頁也只需要最多48位來表示他的指紋。
4、如何限制只采集特定類型(文本、圖像)的頁面?
-
可以將crawler限制在特定的網址爬行
?從隊列Q中刪除到其他網站的URL -
可以將crawler限制在特定的目錄爬行
?刪除不在特定目錄的URL -
限制crawler只采集一個特定MIME類型的數據
?只采集文本文件,不采集二進制文件如images, videos, mp3 等 -
遵守網頁所有者的限制
?robot exclusion
MIME(Multipurpose Internet Mail Extensions)規定了在電子郵件中用于表示各種各樣的數據類型的符號化方法。 HTTP協議中也使用了MIME的框架, “Content-Type: ”
? text/plain(純文本)
? text/html(HTML文檔)
? application/xhtml+xml(XHTML文檔)
? image/gif(GIF圖像)
? image/jpeg(JPEG圖像)
? image/png(PNG圖像)
? video/mpeg(MPEG動畫)
? application/octet-stream(任意的二進制數據)
? application/pdf(PDF文檔)
? application/msword(Microsoft Word文件)
三、網絡信息搜集的禮貌原則
1994年,Koster提出了機器人排斥協議 (Robots Exclusion Protocol ),即遵循網頁所有者的限制。
- Web站點和網頁可以說明robot是否可以爬行或索引某些區域
- 兩種方法:
?機器人排斥協議(Robots Exclusion Protocol) :排除目錄的站點說明
? 機器人元標簽(Robots META Tag):排除索引或鏈接訪問的標簽
1、機器人排斥協議–其一:Robots Exclusion Protocol
- 站點管理員把文件 “robots.txt”放在web服務
器的根目錄下,如:
?http://www.ebay.com/robots.txt
? 文件由對給定的蜘蛛(User-agent)的排除目錄列表構成 - 排除所有蜘蛛的訪問:
User-agent: *
Disallow: /(/表示啥都不給看)
(1)Robots.txt文件
- Robots.txt文件由若干條的記錄組成,記錄之間用一個或多個空行隔開。其中每條記錄均由兩個域組成:User-Agent域和Disallow域,每行的格式為<field>:<value>
- User-agent(用戶代理)
?User-agent行用于指定網絡crawler的名字
?一個robots.txt文件中至少要有一條User-agent記錄。如果有多條User-agent記錄,則說明有多個robot會受到規則的限制。可以使用通配符“*” 等 - Disallow(拒絕訪問聲明)
?Disallow行聲明了該網站中不希望被訪問的文件和(或)目錄
(2)Robot排除協議實例
? 只需用空白行就可將不同蜘蛛的排除目錄分開
? 一個“Disallow” 行說明一個目錄
(3)網站地圖
由于爬蟲是漫無目的的爬行,為了提高效率,google等巨頭聯合倡議,希望網站管理者提供一個網站的地圖,使得網站的結構更加清晰,每個url都是他的一個子鏈接。
2、機器人排斥協議–其二:Robots META Tag
- META tag較新,且比“robots.txt”較少采用
- 標準只是被“good robots” 遵循的協定
- 限制只是對crawlers,一般瀏覽無妨
?“君子協定”(你的crawler可以不遵守,不理也可以,只不過顯得我們的爬蟲很沒素質 ̄□ ̄||) - 有些公司被起訴。因為不遵循這些協定,或侵入私人電腦空間
3、采集數據所遵守的禮貌策略
? 遵守網站上發布的Robot.txt采集限制協議
? 不要頻繁訪問某個網站的網頁。密集訪問類似于DoS攻擊,導致普通用戶正常瀏覽網站產生困難。有些網站會嚴密控制這種密集訪問行為(要防止自己被列入黑名單)。
? 約定:抓取完成后休息2秒鐘
4、為每個Web服務器建立一個工作隊列(避免自己成為DoS攻擊)
- 尊重Web服務器為防止拒絕服務(DoS)攻擊采取的措施
- 限制對一個IP地址的活躍請求數量
- 對每個服務器維護一個請求隊列
?利用HTTP/1.1的持續socket能力 - 在一個較大的網站范圍均勻的分布抓取活動(不要把鏈接建立到一個網站上,雖然在一個網站不同的采集效率會很高,盡量將采集的連接分布到各個網站,這也就是訪問的局部性)。
- 在“利用訪問的局部性”和“對網站的禮貌性”之間求得平衡
四、例子程序(Python3)–寫了再填
1、主要結構
2、完整程序
五、高性能信息搜集
1、信息收集的復雜性
- 信息搜集是一項十分繁雜和龐大的工程
?不同的協議
?不同的網絡情況
?時效性的要求
?網頁質量的要求 - 怎樣保持禮貌?
? Per-server Work Queues, Robot Exclusion - 怎樣保持最新?更新頻度和策略如何決定?
? Web dynamics, Crawling strategy - 怎樣獲取高質量的web頁面?
? Important measures, Breadth-First crawling - 怎樣爬取基于內容的網頁?
? Focused and selective crawling
2、需要高性能的Crawler
3、多個并發的抓取
- 管理多個并發的連接
?單個下載可能需要幾秒鐘
?同時對不同的HTTP服務器建立許多socket 連接 - 過多的硬件并行好處不大
?爬取的性能瓶頸主要在網絡和硬盤 - 兩種基本方法
?用多線程/多進程
?用異步I/O:帶事件處理的非阻塞sockets
4、需要考慮的問題
- 存儲
- 爬行速度
- 擴展性 – just add systems to do it faster or handle more data
? crawler之間的協調 (communication/processing overhead) ? 帶寬的使用 - 有選擇性地去采集信息
- crawler控制界面
- 對被采集頁面不造成影響 ,遵循robots.txt
最自己的程序負責任!
總結
以上是生活随笔為你收集整理的网络信息检索(三)Web信息搜集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: System32下文件说明
- 下一篇: TP-wr703N TTL刷机以及刷u-