日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络信息检索(三)Web信息搜集

發布時間:2024/3/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络信息检索(三)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 Supported

2、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信息搜集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。