导航:首页 > 编程语言 > 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蜘蛛程序相关的资料

热点内容
做账为什么要用加密狗 浏览:581
考研群体怎么解压 浏览:153
linux修改命令提示符 浏览:222
圆圈里面k图标是什么app 浏览:57
pdf加空白页 浏览:943
linux服务器如何看网卡状态 浏览:314
解压新奇特视频 浏览:702
图书信息管理系统java 浏览:549
各种直线命令详解 浏览:859
程序员泪奔 浏览:143
素材怎么上传到服务器 浏览:513
android百度离线地图开发 浏览:187
web可视化编程软件 浏览:288
java笔试编程题 浏览:743
win11什么时候可以装安卓 浏览:560
java不写this 浏览:1001
云点播电影网php源码 浏览:97
pythonclass使用方法 浏览:226
移动加密软件去哪下载 浏览:294
php弹出alert 浏览:209