導航:首頁 > 編程語言 > php蜘蛛程序

php蜘蛛程序

發布時間:2022-08-13 00:33:26

『壹』 在網站中的robots.txt是用來干什麼的哦對網站有什麼影響啊

本文我們將看一看機器人拒絕標准(Robots Exclusion Standard),這聽起來像是科幻小說里的內容,其實它是一個用於阻止搜索引擎者蜘蛛(spider)或機器人(robots)訪問網站內容的一個工具。

Robots.txt是一個純文本文件,通過該文件可以控制搜索引擎蜘蛛(spider)訪問網站的內容,必須將其放在網站的根目錄才可以正常使用,且文件名應該為小寫,比如「http://www.youdomain.com/robots.txt」,即使您的網站沒有設置對搜索引擎訪問的限制,最好也能放一個空白的robots.txt文件在網站根目錄下。

創建一個Robots.txt

如果不希望任何機器人(robots)或者蜘蛛(spider)索引網站,可以在Robots.txt里鍵入如下規則:

User-agent: *
Disallow: /
在這個例子中,"*"是個通配符,表示此規則被應用到所有的搜索引擎(Search Engine),此通配符是

一個特殊的符號表示一切內容,一個典型的用法:如果鍵入 「d*ng」 ,則計算機可以解釋為:

「ding」,"dang","dong","ng","dzing" 等更多的內容會符合。

Disallow表示不允許被搜索引擎訪問的網頁文件或者目錄,對它的設置正確與否非常重要,如果設置

不當,也許會對網站造成極大的損失。

如果允許搜索引擎蜘蛛(spider)訪問網站的全部內容,則設置方法如下:

User-agent: *
Disallow:
以上設置方法中,User-agent仍然是使用通配符*表示所有搜索引擎蜘蛛,Disallow為空表示允許搜索

引擎蜘蛛訪問網站所有的文件,即不對搜索引擎做任何限制,完全敞開了讓蜘蛛們任意訪問。

如果讓所有搜索引擎機器人不訪問和索引網站根目錄下的images目錄,則可以使用如下寫法:

User-agent: *
Disallow: /images/
上面的例子表示讓所有搜索引擎蜘蛛遠離/images/目錄及目錄下所有的文件。注意/images/後的「/」

,如果是/images的話,則比如/images.html , /images/index.html都不允許搜索引擎蜘蛛訪問。

如果不允許搜索引擎蜘蛛訪問指定的一個文件,則設置方法如下:

User-agent: *
Disallow: /images/biggorillaonatricycle.jpg
這時搜索引擎蜘蛛會掃描訪問除了images目錄下biggorillaonatricycle.jpg的所有文件,但是如果其

它目錄比如imagestwo下有biggorillaonatricycle.jpg這張圖片的話,那麼搜索引擎蜘蛛一樣會訪問

到,因此我們可以使用如下設置方法:

User-agent: *
Disallow: /images/biggorillaonatricycle.jpg
Disallow: /imagestwo/biggorillaonatricycle.jpg
下面的設置方法也不錯:

User-agent: *
Disallow: /images/
Disallow: /imagestwo/
Disallow: /aboutus/
上面例子告訴搜索引擎蜘蛛忽視指定的三個目錄,但是也可以同時指定目錄和文件:

User-agent: *
Disallow: /images/
Disallow: /imagestwo/
Disallow: /aboutus/wearereallyevil.html
限制指定的搜索引擎蜘蛛(spider)/機器人(Robots)

之前說到如何限制搜索引擎蜘蛛訪問網站文件,下面開始如何限制指定的搜索引擎蜘蛛訪問網站文件



如果想告訴某一個搜索引擎蜘蛛忽視網站的所有目錄和文件,則使用如下設置方法:

User-agent: Google-Bot
Disallow: /
Google-Bot表示為Google的搜索引擎蜘蛛/機器人
slurp 表示為Yahoo的搜索引擎蜘蛛/機器人

當然也可以告訴一個指定的搜索引擎蜘蛛,忽視網站的一個指定目錄和文件,設置方法如下:

User-agent: Google-Bot
Disallow: /images/
Disallow: /secrets/globaldomination.html

User-agent: slurp
Disallow: /images/
Disallow: /secrets/globaldomination.html
Disallow: /tmp/

User-agent: slurp
Disallow: /images/
Disallow: /secrets/globaldomination.html

User-agent: Google-Bot
Disallow: /images/
Disallow: /secrets/globaldomination.html
Disallow: /cgi-bin/

參考資料:http://www.hi-open.cn/index.php/archives/9/
來自:http://www.hi-open.cn

『貳』 PHP判斷來訪是搜索引擎蜘蛛還是普通用戶的代碼小結

1、推薦的一種方法:php判斷搜索引擎蜘蛛爬蟲還是人為訪問代碼,摘自Discuz x3.2
<?php
function checkrobot($useragent=''){
static $kw_spiders = array('bot', 'crawl', 'spider' ,'slurp', 'sohu-search', 'lycos', 'robozilla');
static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');

$useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
if(strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers)) return false;
if(dstrpos($useragent, $kw_spiders)) return true;
return false;
}
function dstrpos($string, $arr, $returnvalue = false) {
if(empty($string)) return false;
foreach((array)$arr as $v) {
if(strpos($string, $v) !== false) {
$return = $returnvalue ? $v : true;
return $return;
}
}
return false;
}
if(checkrobot()){
echo '機器人爬蟲';
}else{
echo '人';
}
?>

實際應用中可以這樣判斷,直接不是搜索引擎才執行操作
<?php
if(!checkrobot()){
//do something
}
?>

2、第二種方法:
使用PHP實現蜘蛛訪問日誌統計
$useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT']));

if (strpos($useragent, 'googlebot')!== false){$bot = 'Google';}
elseif (strpos($useragent,'mediapartners-google') !== false){$bot = 'Google Adsense';}
elseif (strpos($useragent,'spider') !== false){$bot = 'Bai';}
elseif (strpos($useragent,'sogou spider') !== false){$bot = 'Sogou';}
elseif (strpos($useragent,'sogou web') !== false){$bot = 'Sogou web';}
elseif (strpos($useragent,'sosospider') !== false){$bot = 'SOSO';}
elseif (strpos($useragent,'360spider') !== false){$bot = '360Spider';}
elseif (strpos($useragent,'yahoo') !== false){$bot = 'Yahoo';}
elseif (strpos($useragent,'msn') !== false){$bot = 'MSN';}
elseif (strpos($useragent,'msnbot') !== false){$bot = 'msnbot';}
elseif (strpos($useragent,'sohu') !== false){$bot = 'Sohu';}
elseif (strpos($useragent,'yoBot') !== false){$bot = 'Yo';}
elseif (strpos($useragent,'twiceler') !== false){$bot = 'Twiceler';}
elseif (strpos($useragent,'ia_archiver') !== false){$bot = 'Alexa_';}
elseif (strpos($useragent,'iaarchiver') !== false){$bot = 'Alexa';}
elseif (strpos($useragent,'slurp') !== false){$bot = '雅虎';}
elseif (strpos($useragent,'bot') !== false){$bot = '其它蜘蛛';}
if(isset($bot)){
$fp = @fopen('bot.txt','a');
fwrite($fp,date('Y-m-d H:i:s')."\t".$_SERVER["REMOTE_ADDR"]."\t".$bot."\t".'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]."\r\n");
fclose($fp);
}

第三種方法:
我們可以通過HTTP_USER_AGENT來判斷是否是蜘蛛,搜索引擎的蜘蛛都有自己的獨特標志,下面列取了一部分。
function is_crawler() {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
$spiders = array(
'Googlebot', // Google 爬蟲
'Baispider', // 網路爬蟲
'Yahoo! Slurp', // 雅虎爬蟲
'YoBot', // 有道爬蟲
'msnbot' // Bing爬蟲
// 更多爬蟲關鍵字
);
foreach ($spiders as $spider) {
$spider = strtolower($spider);
if (strpos($userAgent, $spider) !== false) {
return true;
}
}
return false;
}

下面的php代碼附帶了更多的蜘蛛標識
function isCrawler() {
echo $agent= strtolower($_SERVER['HTTP_USER_AGENT']);
if (!empty($agent)) {
$spiderSite= array(
"TencentTraveler",
"Baispider+",
"BaiGame",
"Googlebot",
"msnbot",
"Sosospider+",
"Sogou web spider",
"ia_archiver",
"Yahoo! Slurp",
"YouBot",
"Yahoo Slurp",
"MSNBot",
"Java (Often spam bot)",
"BaiDuSpider",
"Voila",
"Yandex bot",
"BSpider",
"twiceler",
"Sogou Spider",
"Speedy Spider",
"Google AdSense",
"Heritrix",
"Python-urllib",
"Alexa (IA Archiver)",
"Ask",
"Exabot",
"Custo",
"OutfoxBot/YoBot",
"yacy",
"SurveyBot",
"legs",
"lwp-trivial",
"Nutch",
"StackRambler",
"The web archive (IA Archiver)",
"Perl tool",
"MJ12bot",
"Netcraft",
"MSIECrawler",
"WGet tools",
"larbin",
"Fish search",
);
foreach($spiderSite as $val) {
$str = strtolower($val);
if (strpos($agent, $str) !== false) {
return true;
}
}
} else {
return false;
}
}
if (isCrawler()){
echo "你好蜘蛛精!";
}
else{
echo "你不是蜘蛛精啊!";

『叄』 求:php判斷普通訪客於搜索引擎蜘蛛代碼,並根據來訪用戶給出不同代碼

<?php
// 下面是一些常見的蜘蛛名
$flag = false;
$tmp = $_SERVER['HTTP_USER_AGENT'];
if(strpos($tmp, 'Googlebot') !== false){
$flag = true;
} else if(strpos($tmp, 'Baispider') >0){
$flag = true;
} else if(strpos($tmp, 'Yahoo! Slurp') !== false){
$flag = true;
} else if(strpos($tmp, 'msnbot') !== false){
$flag = true;
} else if(strpos($tmp, 'Sosospider') !== false){
$flag = true;
} else if(strpos($tmp, 'YoBot') !== false || strpos($tmp, 'OutfoxBot') !== false){
$flag = true;
} else if(strpos($tmp, 'Sogou web spider') !== false || strpos($tmp, 'Sogou Orion spider') !== false){
$flag = true;
} else if(strpos($tmp, 'fast-webcrawler') !== false){
$flag = true;
} else if(strpos($tmp, 'Gaisbot') !== false){
$flag = true;
} else if(strpos($tmp, 'ia_archiver') !== false){
$flag = true;
} else if(strpos($tmp, 'altavista') !== false){
$flag = true;
} else if(strpos($tmp, 'lycos_spider') !== false){
$flag = true;
} else if(strpos($tmp, 'Inktomi slurp') !== false){
$flag = true;
}
if($flag == false){
//正常用戶代碼
} else {
//蜘蛛處理代碼
}
?>
可以放在網頁程序的開頭

『肆』 PHP判斷普通用戶或蜘蛛,調用不同代碼

定義一個函數 get_naps_bot()
如果是 BOT 則返回字元串, 如果不是 BOT 返回 false

function get_naps_bot()
{
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (strpos($useragent, 'googlebot') !== false){
return 'Googlebot';
}

if (strpos($useragent, 'msnbot') !== false){
return 'MSNbot';
}

if (strpos($useragent, 'slurp') !== false){
return 'Yahoobot';
}

if (strpos($useragent, 'spider') !== false){
return 'Baispider';
}

if (strpos($useragent, 'sohu-search') !== false){
return 'Sohubot';
}

if (strpos($useragent, 'lycos') !== false){
return 'Lycos';
}

if (strpos($useragent, 'robozilla') !== false){
return 'Robozilla';
}
return false;
}

$botName = get_naps_bot();
if( empty($botName ) )
{
include( "11.php" );// 用戶訪問
}
else
{
include( "22.php" ); // 蜘蛛訪問
}

『伍』 超簡單php判斷是否為搜索引擎蜘蛛

得到訪問ip,然後和你的收集的蜘蛛 ip 數組比對,是就 echo true,不是 echo false,夠簡單的吧

『陸』 PHPSOU蜘蛛開源版本怎麼用 好不容易搭好了PHP+IIS+MYSQL環境,但是不會用。初學者,學點東西真困難啊!

是挺困難的, 程序調式難啊,

『柒』 php ecshop 網路蜘蛛蜘蛛是做什麼的

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

——這樣看來,網路蜘蛛就是一個爬行程序,一個抓取網頁的程序。

『捌』 php搜索引擎蜘蛛程序

推薦一個國外知名度頗高的搜索引擎,含有網頁蜘蛛程序,以前好象有人想要這方面的資料,現在有了,大家可以研究下源碼

官方網站:
http://phpdig.toiletoine.net/

演示:
http://phpdig.toiletoine.net/sea ... te=100&option=start

中文版本和演示,我以前提供過(1.62版本的漢化),2003年11月換空間的時候沒備份,沒了。找下載了的人看看有沒有。

下載:
這是最近(2003年12月)更新的版本的下載(1.65 En):
http://www.phpdig.net/navigation.php?action=download

演示:
http://www.phpdig.net/navigation.php?action=demo

主要功能:
類似google、網路的搜索引擎,php+mysql。

PhpDig is a http spider/search engine written in Php with a MySql database in backend.

HTTP Spidering : PhpDig follows links as it was any web browser within a web server, to build the pages list to index. Links can be in AreaMap, or frames. PhpDig supports relocations. Any syntax of HREF attribute is followed by Phpdig.
PhpDig don't go out the root site you define for the indexing. Spidering depth is choosen by user.
All html content is listed, both static and dynamic pages. PhpDig searches the Mime-Type of the document, or tests existence of an tag at the beginning of it.

支持全文搜索
Full Text indexing : PhpDig indexes all words of a document, excepting small words (less than 3 letters) an common words, those are definded in a text file.
Lone numbers are not inded, but those included in words. Underscores make part of a word.
Occurences of a word in a document is saved. Words in the title can have a more important weight in ranking results.

支持多種格式文件的索引,如pdf
File types wich can be indexed : PhpDig indexes HTML and text files by itself.
PhpDig could index PDF, MS-Word and MS-Excel files if you install external binaries on the spidering machines to this purpose.
To demonstrate the feature, you can search into Hamlet (tragedy, William Shakespeare) in MS-Word format, and L'Avare (comedy, Molière) in Pdf format.

支持robots
Other features : PhpDig Tries to read a robots.txt file at the server root. It searches meta robots tags too.
The Last-Modified header value is stored in the database to avoid rendant indexing. Also the meta revisit-after tag.

可針對特定網站進行全文索引,蜘蛛可1-9個層自動獲取全部url

其中的蜘蛛程序寫得十分好,有興趣的朋友推薦研究下。

希望對你有用!

『玖』 什麼是網路蜘蛛

[摘要]當「蜘蛛」程序出現時,現代意義上的搜索引擎才初露端倪。它實際上是一種電腦「機器人」(Computer Robot),電腦「機器人」是指某個能以人類無法達到的速度不間斷地執行某項任務的軟體程序。由於專門用於檢索信息的「機器人」程序就象蜘蛛一樣在網路間爬來爬去,反反復復,不知疲倦。所以,搜索引擎的「機器人」程序就被稱為「蜘蛛」程序。

關鍵詞:網路蜘蛛 起源 原理 優化

目錄

什麼是網路蜘蛛

網路蜘蛛的起源

網路蜘蛛的工作原理

正文開始 【網路蜘蛛】

1、什麼是網路蜘蛛

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

----這樣看來,網路蜘蛛就是一個爬行程序,一個抓取網頁的程序。

2、網路蜘蛛的起源

----要說網路蜘蛛的起源,我們還得從搜索引擎說起,什麼是搜索引擎呢?搜索引擎的起源是什麼,這和網路蜘蛛的起源密切相關。

----搜索引擎指自動從英特網搜集信息,經過一定整理以後,提供給用戶進行查詢的系統。英特網上的信息浩瀚萬千,而且毫無秩序,所有的信息象汪洋上的一個個小島,網頁鏈接是這些小島之間縱橫交錯的橋梁,而搜索引擎,則為你繪制一幅一目瞭然的信息地圖,供你隨時查閱。

----搜索引擎從1990年原型初顯,到現在成為人們生活中必不可少的一部分,它經歷了太多技術和觀念的變革。
----十四年前1994年的一月份,第一個既可搜索又可瀏覽的分類目錄EINetGalaxy上線了。在它之後才出現了雅虎,直至我們現在熟知的Google、網路。但是他們都不是第一個吃搜索引擎這個螃蟹的第一人。從搜索FTP上的文件開始,搜索引擎的原型就出現了,那時還未有萬維網,當時人們先用手工後用蜘蛛程序搜索網頁,但隨著互聯網的不斷壯大,怎樣能夠搜集到的網頁數量更多、時間更短成為了當時的難點和重點,成為人們研究的重點。

----搜索引擎原型初顯

----如果要追溯的話,搜索引擎的歷史比WorldWideWeb 還要長。早在Web出現之前,互聯網上就已經存在許多旨在讓人們共享的信息資源了。這些資源當時主要存在於各種允許匿名訪問的FTP 站點。為了便於人們在分散的FTP資源中找到所需的東西,1990年,加拿大麥吉爾大學(McGillUniversity)的幾個大學生開發了一個軟體Archie。它是一個可搜索的FTP文件名列表,用戶必須輸入精確的文件名搜索,然後Archie會告訴用戶哪一個FTP地址可以下載這個文件。Archie實際上是一個大型的資料庫,再加上與這個大型資料庫相關聯的一套檢索方法。Archie雖然還不是搜索引擎,但是從它的工作原理上看,它是所有搜索引擎的祖先。

----當萬維網(WorldWideWeb)出現後,人們可以通過 html傳播網頁信息,網路上的信息開始成倍增長。人們紛紛使用各種方法將網路上的信息搜集來,進行分類、整理,以方便查找。現在人們很熟悉的網站雅虎(Yahoo)就是在這個環境下誕生的。還在Stanford大學讀書的美籍華人楊致遠和他的同學迷上了互聯網。他們將互聯網上有趣的網頁搜集過來,與同學一起分享。後來,1994年4月,他們倆共同辦了雅虎。隨著訪問量和收錄鏈接數的增長,雅虎目錄開始支持簡單的資料庫搜索。但是因為雅虎的數據是手工輸入的,所以不能真正被歸為搜索引擎,事實上只是一個可搜索的目錄。

----當「蜘蛛」程序出現時,現代意義上的搜索引擎才初露端倪。它實際上是一種電腦「機器人」(Computer Robot),電腦「機器人」是指某個能以人類無法達到的速度不間斷地執行某項任務的軟體程序。由於專門用於檢索信息的「機器人」程序就象蜘蛛一樣在網路間爬來爬去,反反復復,不知疲倦。所以,搜索引擎的「機器人」程序就被稱為「蜘蛛」程序。

----這種程序實際是利用html文檔之間的鏈接關系,在Web上一個網頁一個網頁的爬取(crawl),將這些網頁抓到系統來進行分析,並放入資料庫中。第一個開發出「蜘蛛」程序的是Matthew Gray,他於1993年開發了World Wide Web Wanderer,它最初建立時是為了統計互聯網上的伺服器數量,到後來發展到能夠捕獲網址。現代搜索引擎的思路就來源於Wanderer,後來很多人在此基礎上對蜘蛛程序進行了改進。

----1994年7月20日發布的Lycos網站第一個將 「蜘蛛」程序接入到其索引程序中。引入「蜘蛛」後給其帶來的最大優勢就在於其遠勝於其它搜索引擎的數據量。自此之後幾乎所有占據主導地位的搜索引擎中,都靠「蜘蛛」來搜集網頁信息。Infoseek是另一個重要的搜索引擎,於1994年年底才與公眾見面。起初,Infoseek只是一個不起眼的搜索引擎,它沿襲Yahoo!和Lycos的概念,並沒有什麼獨特的革新。但是它友善的用戶界面、大量附加服務使它在用戶中贏得了口碑。1995年12月,它與Netscape的戰略性協議,使它成為一個強勢搜索引擎:當用戶點擊Netscape瀏覽器上的搜索按鈕時,彈出Infoseek的搜索服務,而此前由Yahoo!提供該服務。 1995年12月15日,Alta Vista正式上線。它是第一個支持高級搜索語法的搜索引擎,成功地整合了此前人類所有的信息檢索技術,解決了包括字根處理、關鍵詞檢索、布爾邏輯,以及通過向量空間模型的查詢排名等關鍵問題。正式公開之前,Alta Vista就已經擁有20萬訪問用戶,在短短三個星期之內,到訪人數由每天30萬次增加到200萬次。它的成功在於滿足了用戶三個方面的需求:網上索引范圍超過了此前任何一家搜索引擎;短短幾秒鍾內便可從龐大的資料庫中為用戶返回搜索結果;Alta Vista小組從一開始就採用了一種模塊設計技術,能夠跟蹤網站的流行趨勢,同時不斷擴大處理能力。在當時許多搜索引擎之中,Alta Vista脫穎而出,成為網路搜索的代名詞。Google就是站在這樣的巨人的肩膀上顛覆並創造著。「上網即搜索」 改變了人們上網方式的,就是現在鼎鼎大名的Google。Google並不是搜索引擎的發明者,甚至有點落後,但是它卻讓人們愛上了搜索。

----1998年9月,在佩奇和布林創建Google之時,業界對互聯網搜索功能的理解是:某個關鍵詞在一個文檔中出現的頻率越高,該文檔在搜索結果中的排列位置就要越顯著。這就引出了這樣一個問題,如果一個頁面充斥著某一個關鍵字的話,那麼它將排在很顯著的位置,但這樣一個頁面對於用戶來說,卻沒有任何意義。佩奇和布林發明了「網頁級別」(PageRank)技術,來排列搜索結果。即考察該頁面在網上被鏈接的頻率和重要性來排列,互聯網上指向這一頁面的重要網站越多,該頁面的位次也就越高。當從網頁A鏈接到網頁B時,Google 就認為「網頁A投了網頁B一票」。Google根據網頁的得票數評定其重要性。然而,除了考慮網頁得票數的純數量之外,Google還要分析投票的網頁,「重要」的網頁所投出的票就會有更高的權重,並且有助於提高其他網頁的「重要性」。 Google以其復雜而全自動的搜索方法排除了任何人為因素對搜索結果的影響。沒人能花錢買到更高的網頁級別,從而保證了網頁排名的客觀公正。除此之外,動態摘要、網頁快照、多文檔格式支持、地圖股票詞典尋人等集成搜索也都深得網民的喜愛。其他眾多搜索引擎也都緊跟Google,推出這些服務。Fast(Alltheweb)公司發布的搜索引擎AllTheWeb,總部位於挪威,其在海外的風頭直逼Google。Alltheweb的網頁搜索支持Flash和pdf搜索,支持多語言搜索,還提供新聞搜索、圖像搜索、視頻、MP3、和FTP搜索,擁有極其強大的高級搜索功能。而中國的網路更是憑借「更懂中文」而吸引著中國的網路受眾,它擁有超過10億的中文網頁資料庫,並且,這些網頁的數量每天正以千萬級的速度在增長。

----搜索引擎越來越成為人們生活中重要的一部分,找資料、查地圖、聽音樂,只有想不到的,沒有搜索不到的。
----搜索引擎的三個基本原理

----1.利用蜘蛛系統程序,自動訪問互聯網,並沿著任何網頁中的所有URL爬到其它網頁,重復這過程,並把爬過的所有網頁收集回來。

----2.由分析索引系統程序對收集回來的網頁進行分析,提取相關網頁信息,根據一定的相關度演算法進行大量復雜計算,得到每一個網頁針對頁面內容中及超鏈中每一個關鍵詞的相關度(或重要性),然後用這些相關信息建立網頁索引資料庫。

----3.當用戶輸入關鍵詞搜索後,由搜索系統程序從網頁索引資料庫中找到符合該關鍵詞的所有相關網頁。相關度數值排序,相關度越高,排名越靠前。最後,由頁面生成系統將搜索結果的鏈接地址和頁面內容摘要等內容組織起來返回給用戶。

----說到這里,你可能對搜索引擎和網路蜘蛛有了一個初步的了解了吧!
3、網路蜘蛛的工作原理

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

----在抓取網頁的時候,網路蜘蛛一般有兩種策略:廣度優先和深度優先(如下圖所示)。

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

----由於不可能抓取所有的網頁,有些網路蜘蛛對一些不太重要的網站,設置了訪問的層數。例如,在上圖中,A為起始網頁,屬於0層,B、C、D、E、F屬於第1 層,G、H屬於第2層,I屬於第3層。如果網路蜘蛛設置的訪問層數為2的話,網頁I是不會被訪問到的。這也讓有些網站上一部分網頁能夠在搜索引擎上搜索 到,另外一部分不能被搜索到。對於網站設計者來說,扁平化的網站結構設計有助於搜索引擎抓取其更多的網頁。
----網路蜘蛛在訪問網站網頁的時候,經常會遇到加密數據和網頁許可權的問題,有些網頁是需要會員許可權才能訪問。當然,網站的所有者可以通過協議讓網路蜘蛛不去抓 取(下小節會介紹),但對於一些出售報告的網站,他們希望搜索引擎能搜索到他們的報告,但又不能完全免費的讓搜索者查看,這樣就需要給網路蜘蛛提供相應的 用戶名和密碼。網路蜘蛛可以通過所給的許可權對這些網頁進行網頁抓取,從而提供搜索。而當搜索者點擊查看該網頁的時候,同樣需要搜索者提供相應的許可權驗證。

----每個網路蜘蛛都有自己的名字,在抓取網頁的時候,都會向網站標明自己的身份。網路蜘蛛在抓取網頁的時候會發送一個請求,這個請求中就有一個欄位為User -agent,用於標識此網路蜘蛛的身份。例如Google網路蜘蛛的標識為GoogleBot,Bai網路蜘蛛的標識為BaiDuSpider, Yahoo網路蜘蛛的標識為Inktomi Slurp。如果在網站上有訪問日誌記錄,網站管理員就能知道,哪些搜索引擎的網路蜘蛛過來過,什麼時候過來的,以及讀了多少數據等等。如果網站管理員發 現某個蜘蛛有問題,就通過其標識來和其所有者聯系。

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

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

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

---- 搜索引擎建立網頁索引,處理的對象是文本文件。對於網路蜘蛛來說,抓取下來網頁包括各種格式,包括html、圖片、doc、pdf、多媒體、動態網頁及其 它格式等。這些文件抓取下來後,需要把這些文件中的文本信息提取出來。准確提取這些文檔的信息,一方面對搜索引擎的搜索准確性有重要作用,另一方面對於網 絡蜘蛛正確跟蹤其它鏈接有一定影響。對於doc、pdf等文檔,這種由專業廠商提供的軟體生成的文檔,廠商都會提供相應的文本提取介面。網路蜘蛛只需要調用這些插件的介面,就可以輕松的提取文檔中的文本信息和文件其它相關的信息。但HTML等文檔不一樣,HTML有一套自己的語法,通過不同的命令標識符來表示不同的字體、顏色、位置等版式,如:、、等, 提取文本信息時需要把這些標識符都過濾掉。過濾標識符並非難事,因為這些標識符都有一定的規則,只要按照不同的標識符取得相應的信息即可。但在識別這些信 息的時候,需要同步記錄許多版式信息,例如文字的字體大小、是否是標題、是否是加粗顯示、是否是頁面的關鍵詞等,這些信息有助於計算單詞在網頁中的重要程 度。同時,對於HTML網頁來說,除了標題和正文以外,會有許多廣告鏈接以及公共的頻道鏈接,這些鏈接和文本正文一點關系也沒有,在提取網頁內容的時候, 也需要過濾這些無用的鏈接。例如某個網站有「產品介紹」頻道,因為導航條在網站內每個網頁都有,若不過濾導航條鏈接,在搜索「產品介紹」的時候,則網站內 每個網頁都會搜索到,無疑會帶來大量垃圾信息。過濾這些無效鏈接需要統計大量的網頁結構規律,抽取一些共性,統一過濾;對於一些重要而結果特殊的網站,還 需要個別處理。這就需要網路蜘蛛的設計有一定的擴展性。

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

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

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

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

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

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

---- 現在大家對網路蜘蛛的工作原理有了初步的了解了吧,了解後就要在以後的網站製作中考慮蜘蛛的爬行規律,比如製作網站地圖就很重要,好了,如果你有更好的見解,請到這里發表,火鳥非常願意與你交流,共同研究網站製作技巧,盡量將自己的網站製作的符合標准,符合用戶的習慣!

閱讀全文

與php蜘蛛程序相關的資料

熱點內容
解壓的密碼htm被屏蔽 瀏覽:502
冬天太冷冰箱壓縮機不啟動怎麼辦 瀏覽:82
手機打開vcf需要什麼編譯器 瀏覽:909
加密磁碟後開機很慢 瀏覽:270
長沙智能雲控系統源碼 瀏覽:256
阿里雲伺服器如何設置操作系統 瀏覽:999
超級命令的英文 瀏覽:782
做賬為什麼要用加密狗 瀏覽:586
考研群體怎麼解壓 瀏覽:156
linux修改命令提示符 瀏覽:226
圓圈裡面k圖標是什麼app 瀏覽:60
pdf加空白頁 瀏覽:945
linux伺服器如何看網卡狀態 瀏覽:317
解壓新奇特視頻 瀏覽:707
圖書信息管理系統java 瀏覽:554
各種直線命令詳解 瀏覽:864
程序員淚奔 瀏覽:147
素材怎麼上傳到伺服器 瀏覽:517
android百度離線地圖開發 瀏覽:191
web可視化編程軟體 瀏覽:294