<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    一、網絡蜘蛛基本原理

      網絡蜘蛛即Web Spider,是一個很形象的名字。把互聯網比喻成一個蜘蛛網,那么Spider就是在網上爬來爬去的蜘蛛。網絡蜘蛛是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站所有的網頁都抓取完為止。如果把整個互聯網當成一個網站,那么網絡蜘蛛就可以用這個原理把互聯網上所有的網頁都抓取下來。

      對于搜索引擎來說,要抓取互聯網上所有的網頁幾乎是不可能的,從目前公布的數據來看,容量最大的搜索引擎也不過是抓取了整個網頁數量的百分之四十左右。這其中的原因一方面是抓取技術的瓶頸,無法遍歷所有的網頁,有許多網頁無法從其它網頁的鏈接中找到;另一個原因是存儲技術和處理技術的問題,如果按照每個頁面的平均大小為20K計算(包含圖片),100億網頁的容量是100×2000G字節,即使能夠存儲,下載也存在問題(按照一臺機器每秒下載20K計算,需要 340臺機器不停的下載一年時間,才能把所有網頁下載完畢)。同時,由于數據量太大,在提供搜索時也會有效率方面的影響。因此,許多搜索引擎的網絡蜘蛛只是抓取那些重要的網頁,而在抓取的時候評價重要性主要的依據是某個網頁的鏈接深度。

      在抓取網頁的時候,網絡蜘蛛一般有兩種策略:廣度優先和深度優先。

      廣度優先是指網絡蜘蛛會先抓取起始網頁中鏈接的所有網頁,然后再選擇其中的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。這是最常用的方式,因為這個方法可以讓網絡蜘蛛并行處理,提高其抓取速度。深度優先是指網絡蜘蛛會從起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之后再轉入下一個起始頁,繼續跟蹤鏈接。這個方法有個優點是網絡蜘蛛在設計的時候比較容易。兩種策略的區別,下圖的說明會更加明確。

      由于不可能抓取所有的網頁,有些網絡蜘蛛對一些不太重要的網站,設置了訪問的層數。例如,在上圖中,A為起始網頁,屬于0層,B、C、D、E、F屬于第1層,G、H屬于第2層, I屬于第3層。如果網絡蜘蛛設置的訪問層數為2的話,網頁I是不會被訪問到的。這也讓有些網站上一部分網頁能夠在搜索引擎上搜索到,另外一部分不能被搜索到。對于網站設計者來說,扁平化的網站結構設計有助于搜索引擎抓取其更多的網頁。

      網絡蜘蛛在訪問網站網頁的時候,經常會遇到加密數據和網頁權限的問題,有些網頁是需要會員權限才能訪問。當然,網站的所有者可以通過協議讓網絡蜘蛛不去抓取(下小節會介紹),但對于一些出售報告的網站,他們希望搜索引擎能搜索到他們的報告,但又不能完全**的讓搜索者查看,這樣就需要給網絡蜘蛛提供相應的用戶名和密碼。網絡蜘蛛可以通過所給的權限對這些網頁進行網頁抓取,從而提供搜索。而當搜索者點擊查看該網頁的時候,同樣需要搜索者提供相應的權限驗證。

      網站與網絡蜘蛛

      網絡蜘蛛需要抓取網頁,不同于一般的訪問,如果控制不好,則會引起網站服務器負擔過重。今年4月,淘寶http://www.taobao.com)就因為雅虎搜索引擎的網絡蜘蛛抓取其數據引起淘寶網服務器的不穩定。網站是否就無法和網絡蜘蛛交流呢?其實不然,有多種方法可以讓網站和網絡蜘蛛進行交流。一方面讓網站管理員了解網絡蜘蛛都來自哪兒,做了些什么,另一方面也告訴網絡蜘蛛哪些網頁不應該抓取,哪些網頁應該更新。

      每個網絡蜘蛛都有自己的名字,在抓取網頁的時候,都會向網站標明自己的身份。網絡蜘蛛在抓取網頁的時候會發送一個請求,這個請求中就有一個字段為User- agent,用于標識此網絡蜘蛛的身份。例如Google網絡蜘蛛的標識為GoogleBot,Baidu網絡蜘蛛的標識為BaiDuSpider, Yahoo網絡蜘蛛的標識為Inktomi Slurp。如果在網站上有訪問日志記錄,網站管理員就能知道,哪些搜索引擎的網絡蜘蛛過來過,什么時候過來的,以及讀了多少數據等等。如果網站管理員發現某個蜘蛛有問題,就通過其標識來和其所有者聯系。下面是博客中http://www.blogchina.com)2004年5月15日的搜索引擎訪問日志:

      網絡蜘蛛進入一個網站,一般會訪問一個特殊的文本文件Robots.txt,這個文件一般放在網站服務器的根目錄下,http://www.blogchina.com/robots.txt。網站管理員可以通過robots.txt來定義哪些目錄網絡蜘蛛不能訪問,或者哪些目錄對于某些特定的網絡蜘蛛不能訪問。例如有些網站的可執行文件目錄和臨時文件目錄不希望被搜索引擎搜索到,那么網站管理員就可以把這些目錄定義為拒絕訪問目錄。Robots.txt語法很簡單,例如如果對目錄沒有任何限制,可以用以下兩行來描述:

      User-agent: *
      Disallow:

      當然,Robots.txt只是一個協議,如果網絡蜘蛛的設計者不遵循這個協議,網站管理員也無法阻止網絡蜘蛛對于某些頁面的訪問,但一般的網絡蜘蛛都會遵循這些協議,而且網站管理員還可以通過其它方式來拒絕網絡蜘蛛對某些網頁的抓取。

      網絡蜘蛛在下載網頁的時候,會去識別網頁的HTML代碼,在其代碼的部分,會有META標識。通過這些標識,可以告訴網絡蜘蛛本網頁是否需要被抓取,還可以告訴網絡蜘蛛本網頁中的鏈接是否需要被繼續跟蹤。例如:表示本網頁不需要被抓取,但是網頁內的鏈接需要被跟蹤。

      關于Robots.txt的語法和META Tag語法,有興趣的讀者查看文獻[4]

      現在一般的網站都希望搜索引擎能更全面的抓取自己網站的網頁,因為這樣可以讓更多的訪問者能通過搜索引擎找到此網站。為了讓本網站的網頁更全面被抓取到,網站管理員可以建立一個網站地圖,即Site Map。許多網絡蜘蛛會把sitemap.htm文件作為一個網站網頁爬取的入口,網站管理員可以把網站內部所有網頁的鏈接放在這個文件里面,那么網絡蜘蛛可以很方便的把整個網站抓取下來,避免遺漏某些網頁,也會減小對網站服務器的負擔。

      內容提取

      搜索引擎建立網頁索引,處理的對象是文本文件。對于網絡蜘蛛來說,抓取下來網頁包括各種格式,包括html、圖片、doc、pdf、多媒體、動態網頁及其它格式等。這些文件抓取下來后,需要把這些文件中的文本信息提取出來。準確提取這些文檔的信息,一方面對搜索引擎的搜索準確性有重要作用,另一方面對于網絡蜘蛛正確跟蹤其它鏈接有一定影響。

      對于doc、pdf等文檔,這種由專業廠商提供的軟件生成的文檔,廠商都會提供相應的文本提取接口。網絡蜘蛛只需要調用這些插件的接口,就可以輕松的提取文檔中的文本信息和文件其它相關的信息。

      HTML等文檔不一樣,HTML有一套自己的語法,通過不同的命令標識符來表示不同的字體、顏色、位置等版式,如:、、等,提取文本信息時需要把這些標識符都過濾掉。過濾標識符并非難事,因為這些標識符都有一定的規則,只要按照不同的標識符取得相應的信息即可。但在識別這些信息的時候,需要同步記錄許多版式信息,例如文字的字體大小、是否是標題、是否是加粗顯示、是否是頁面的關鍵詞等,這些信息有助于計算單詞在網頁中的重要程度。同時,對于HTML網頁來說,除了標題和正文以外,會有許多廣告鏈接以及公共的頻道鏈接,這些鏈接和文本正文一點關系也沒有,在提取網頁內容的時候,也需要過濾這些無用的鏈接。例如某個網站有“產品介紹”頻道,因為導航條在網站內每個網頁都有,若不過濾導航條鏈接,在搜索“產品介紹”的時候,則網站內每個網頁都會搜索到,無疑會帶來大量垃圾信息。過濾這些無效鏈接需要統計大量的網頁結構規律,抽取一些共性,統一過濾;對于一些重要而結果特殊的網站,還需要個別處理。這就需要網絡蜘蛛的設計有一定的擴展性。

      對于多媒體、圖片等文件,一般是通過鏈接的錨文本(即,鏈接文本)和相關的文件注釋來判斷這些文件的內容。例如有一個鏈接文字為“張曼玉照片”,其鏈接指向一張bmp格式的圖片,那么網絡蜘蛛就知道這張圖片的內容是“張曼玉的照片”。這樣,在搜索“張曼玉”和“照片”的時候都能讓搜索引擎找到這張圖片。另外,許多多媒體文件中有文件屬性,考慮這些屬性也可以更好的了解文件的內容。

      動態網頁一直是網絡蜘蛛面臨的難題。所謂動態網頁,是相對于靜態網頁而言,是由程序自動生成的頁面,這樣的好處是可以快速統一更改網頁風格,也可以減少網頁所占服務器的空間,但同樣給網絡蜘蛛的抓取帶來一些麻煩。由于開發語言不斷的增多,動態網頁的類型也越來越多,如:asp、jsp、php等。這些類型的網頁對于網絡蜘蛛來說,可能還稍微容易一些。網絡蜘蛛比較難于處理的是一些腳本語言(如VBScript和javascript)生成的網頁,如果要完善的處理好這些網頁,網絡蜘蛛需要有自己的腳本解釋程序。對于許多數據是放在數據庫的網站,需要通過本網站的數據庫搜索才能獲得信息,這些給網絡蜘蛛的抓取帶來很大的困難。對于這類網站,如果網站設計者希望這些數據能被搜索引擎搜索,則需要提供一種可以遍歷整個數據庫內容的方法。

      對于網頁內容的提取,一直是網絡蜘蛛中重要的技術。整個系統一般采用插件的形式,通過一個插件管理服務程序,遇到不同格式的網頁采用不同的插件處理。這種方式的好處在于擴充性好,以后每發現一種新的類型,就可以把其處理方式做成一個插件補充到插件管理服務程序之中。

      更新周期

      由于網站的內容經常在變化,因此網絡蜘蛛也需不斷的更新其抓取網頁的內容,這就需要網絡蜘蛛按照一定的周期去掃描網站,查看哪些頁面是需要更新的頁面,哪些頁面是新增頁面,哪些頁面是已經過期的死鏈接。

      搜索引擎的更新周期對搜索引擎搜索的查全率有很大影響。如果更新周期太長,則總會有一部分新生成的網頁搜索不到;周期過短,技術實現會有一定難度,而且會對帶寬、服務器的資源都有浪費。搜索引擎的網絡蜘蛛并不是所有的網站都采用同一個周期進行更新,對于一些重要的更新量大的網站,更新的周期短,如有些新聞網站,幾個小時就更新一次;相反對于一些不重要的網站,更新的周期就長,可能一兩個月才更新一次。

      一般來說,網絡蜘蛛在更新網站內容的時候,不用把網站網頁重新抓取一遍,對于大部分的網頁,只需要判斷網頁的屬性(主要是日期),把得到的屬性和上次抓取的屬性相比較,如果一樣則不用更新。

    二、Robots

    <meta name="Robots" contect= "all|none|index|noindex|follow|nofollow">

    其中的屬性說明如下:

    設定為all:文件將被檢索,且頁面上的鏈接可以被查詢;

    設定為none:文件將不被檢索,且頁面上的鏈接不可以被查詢;

    設定為index:文件將被檢索;

    設定為follow:頁面上的鏈接可以被查詢;

    設定為noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;

    設定為nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。

    -----------------------------------
    我們知道,搜索引擎都有自己的“搜索機器人”(ROBOTS),并通過這些ROBOTS在網絡上沿著網頁上的鏈接(一般是http和src鏈接)不斷抓取資料建立自己的數據庫。

    對于網站管理者和內容提供者來說,有時候會有一些站點內容,不希望被ROBOTS抓取而公開。為了解決這個問題,ROBOTS開發界提供了兩個辦法:一個是robots.txt,另一個是The Robots META標簽。

    一、robots.txt

    1、 什么是robots.txt?

    robots.txt是一個純文本文件,通過在這個文件中聲明該網站中不想被robots訪問的部分,這樣,該網站的部分或全部內容就可以不被搜索引擎收錄了,或者指定搜索引擎只收錄指定的內容。

    當一個搜索機器人訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果找到,搜索機器人就會按照該文件中的內容來確定訪問的范圍,如果該文件不存在,那么搜索機器人就沿著鏈接抓取。

    robots.txt必須放置在一個站點的根目錄下,而且文件名必須全部小寫。

    網站 URL
    相應的 robots.txt的 URL

    http://www.w3.org/
    http://www.w3.org/robots.txt

    http://www.w3.org:80/
    http://www.w3.org:80/robots.txt

    http://www.w3.org:1234/
    http://www.w3.org:1234/robots.txt

    http://w3.org/
    http://w3.org/robots.txt

    2、 robots.txt的語法

    "robots.txt"文件包含一條或更多的記錄,這些記錄通過空行分開(以CR,CR/NL, or NL作為結束符),每一條記錄的格式如下所示:

    "<field>:<optionalspace><value><optionalspace>"。

    在該文件中可以使用#進行注解,具體使用方法和UNIX中的慣例一樣。該文件中的記錄通常以一行或多行User-agent開始,后面加上若干Disallow行,詳細情況如下:

    User-agent:

    該項的值用于描述搜索引擎robot的名字,在"robots.txt"文件中,如果有多條User-agent記錄說明有多個robot會受到該協議的限制,對該文件來說,至少要有一條User-agent記錄。如果該項的值設為*,則該協議對任何機器人均有效,在"robots.txt"文件中, "User-agent:*"這樣的記錄只能有一條。

    Disallow :

    該項的值用于描述不希望被訪問到的一個URL,這個URL可以是一條完整的路徑,也可以是部分的,任何以Disallow 開頭的URL均不會被robot訪問到。例如"Disallow: /help"對/help.htm和/help/index.html都不允許搜索引擎訪問,而"Disallow: /help/"則允許robot訪問/help.html,而不能訪問/help/index.html。

    任何一條Disallow記錄為空,說明該網站的所有部分都允許被訪問,在"/robots.txt"文件中,至少要有一條Disallow記錄。如果 "/robots.txt"是一個空文件,則對于所有的搜索引擎robot,該網站都是開放的。

    下面是一些robots.txt基本的用法:

    禁止所有搜索引擎訪問網站的任何部分:

    User-agent: *
    Disallow: /

    允許所有的robot訪問

    User-agent: *
    Disallow:

    或者也可以建一個空文件 "/robots.txt" file

    禁止所有搜索引擎訪問網站的幾個部分(下例中的cgi-bin、tmp、private目錄)

    User-agent: *
    Disallow: /cgi-bin/
    Disallow: /tmp/
    Disallow: /private/

    禁止某個搜索引擎的訪問(下例中的BadBot)

    User-agent: BadBot
    Disallow: /

    只允許某個搜索引擎的訪問(下例中的WebCrawler)

    User-agent: WebCrawler
    Disallow:

    User-agent: *
    Disallow: /

    3、 常見搜索引擎機器人Robots名字

    名稱 搜索引擎

    Baiduspider http://www.baidu.com

    Scooter http://www.altavista.com

    ia_archiver http://www.alexa.com

    Googlebot http://www.google.com

    FAST-WebCrawler http://www.alltheweb.com

    Slurp http://www.inktomi.com

    MSNBOT http://search.msn.com

    4、 robots.txt舉例

    下面是一些著名站點的robots.txt:

    http://www.cnn.com/robots.txt

    http://www.google.com/robots.txt

    http://www.ibm.com/robots.txt

    http://www.sun.com/robots.txt

    http://www.eachnet.com/robots.txt

    5、 常見robots.txt錯誤

    顛倒了順序:
    錯誤寫成

    User-agent: *
    Disallow: GoogleBot

    正確的應該是:

    User-agent: GoogleBot
    Disallow: *

    把多個禁止命令放在一行中:
    例如,錯誤地寫成

    Disallow: /css/ /cgi-bin/ /images/

    正確的應該是

    Disallow: /css/
    Disallow: /cgi-bin/
    Disallow: /images/

    行前有大量空格
    例如寫成

    Disallow: /cgi-bin/

    盡管在標準沒有談到這個,但是這種方式很容易出問題。

    404重定向到另外一個頁面:
    當Robot 訪問很多沒有設置robots.txt文件的站點時,會被自動404重定向到另外一個Html頁面。這時Robot常常會以處理robots.txt文件的方式處理這個Html頁面文件。雖然一般這樣沒有什么問題,但是最好能放一個空白的robots.txt文件在站點根目錄下。

    采用大寫。例如

    USER-AGENT: EXCITE
    DISALLOW:

    雖然標準是沒有大小寫的,但是目錄和文件名應該小寫:

    user-agent:GoogleBot
    disallow:

    語法中只有Disallow,沒有Allow!
    錯誤的寫法是:

    User-agent: Baiduspider
    Disallow: /john/
    allow: /jane/

    忘記了斜杠/
    錯誤的寫做:

    User-agent: Baiduspider
    Disallow: css

    正確的應該是

    User-agent: Baiduspider
    Disallow: /css/

    下面一個小工具專門檢查robots.txt文件的有效性:

    http://www.searchengineworld.com/cgi-bin/robotcheck.cgi

    二、 Robots META標簽

    1、什么是Robots META標簽

    Robots.txt文件主要是限制整個站點或者目錄的搜索引擎訪問情況,而Robots META標簽則主要是針對一個個具體的頁面。和其他的META標簽(如使用的語言、頁面的描述、關鍵詞等)一樣,Robots META標簽也是放在頁面的<head></head>中,專門用來告訴搜索引擎ROBOTS如何抓取該頁的內容。具體的形式類似(見黑體部分):

    <html>

    <head>

    <title>時代營銷--網絡營銷專業門戶</title>

    <meta name="Robots" content="index,follow">

    <meta http-equiv="Content-Type" CONTENT="text/html; charset=gb2312">

    <meta name="keywords" content="營銷… ">

    <meta name="description" content="時代營銷網是…">

    <link rel="stylesheet" href="/public/css.css" type="text/css">

    </head>

    <body>

    </body>

    </html>

    2、Robots META標簽的寫法:

    Robots META標簽中沒有大小寫之分,name=”Robots”表示所有的搜索引擎,可以針對某個具體搜索引擎寫為name=”BaiduSpider”。 content部分有四個指令選項:index、noindex、follow、nofollow,指令間以“,”分隔。

    INDEX 指令告訴搜索機器人抓取該頁面;

    FOLLOW 指令表示搜索機器人可以沿著該頁面上的鏈接繼續抓取下去;

    Robots Meta標簽的缺省值是INDEX和FOLLOW,只有inktomi除外,對于它,缺省值是INDEX,NOFOLLOW。

    這樣,一共有四種組合:

    <META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">

    <META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">

    <META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">

    <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">

    其中

    <META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">可以寫成

    <META NAME="ROBOTS" CONTENT="ALL">;

    <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">可以寫成

    <META NAME="ROBOTS" CONTENT="NONE">

    需要注意的是:上述的robots.txt和Robots META標簽限制搜索引擎機器人(ROBOTS)抓取站點內容的辦法只是一種規則,需要搜饕婊魅說吶浜喜判校⒉皇敲扛鯮OBOTS都遵守的。

    目前看來,絕大多數的搜索引擎機器人都遵守robots.txt的規則,而對于Robots META標簽,目前支持的并不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。例如:

    <META NAME="googlebot" CONTENT="index,follow,noarchive">

    表示抓取該站點中頁面并沿著頁面中鏈接抓取,但是不在GOOLGE上保留該頁面的網頁快照。

    posted on 2006-12-08 21:07 蘆葦 閱讀(218) 評論(0)  編輯  收藏 所屬分類: 其他
    主站蜘蛛池模板: 好爽…又高潮了免费毛片| 无人在线观看完整免费版视频| 日日操夜夜操免费视频| 亚洲精品无码日韩国产不卡av| 久久精品女人天堂AV免费观看| 性xxxx黑人与亚洲| 在线免费一区二区| 日本亚洲中午字幕乱码| 亚洲欧洲精品成人久久奇米网| 精品久久久久久无码免费| 亚洲小说区图片区另类春色| 在线观看免费无码专区| 亚洲色大成网站www永久| 亚洲精品国产精品乱码视色| 日本视频免费高清一本18| 久久久久亚洲AV无码麻豆| 免费大片黄在线观看yw| 亚洲成年网站在线观看| 免费国内精品久久久久影院| 一区二区三区精品高清视频免费在线播放 | 免费在线观看黄网| 久久毛片免费看一区二区三区| 亚洲国产精品无码AAA片| 人与禽交免费网站视频| 亚洲精品无码专区在线播放| 亚洲福利在线播放| 久久99热精品免费观看动漫| 亚洲人色大成年网站在线观看| 老司机永久免费网站在线观看| 曰韩无码AV片免费播放不卡 | 久久亚洲精品国产精品婷婷| 国产美女做a免费视频软件| 一出一进一爽一粗一大视频免费的| 亚洲精品成人无码中文毛片不卡| 亚洲精品国产免费| 特级毛片A级毛片免费播放| 久久亚洲成a人片| 在线观看亚洲免费| 伊人久久免费视频| 美女视频黄频a免费| 亚洲精品视频在线|