阿里巴巴备考面试知识准备Word下载.docx
- 文档编号:22179379
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:37
- 大小:49.17KB
阿里巴巴备考面试知识准备Word下载.docx
《阿里巴巴备考面试知识准备Word下载.docx》由会员分享,可在线阅读,更多相关《阿里巴巴备考面试知识准备Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
这就不用多说了,如果没有足够的速度,那你的网络蜘蛛再怎么准确,也是白搭。
二、基本技术
有好几种方法可以构建网络蜘蛛。
第一种,称之为常规网络蜘蛛,只是简单地进行页面寻找,搜索并获得你想要的东西。
例如,用一个短语作为关键词进行搜索。
第二种,特殊网络蜘蛛,只寻找页面的特定部分。
这种网络蜘蛛在某些特定场合很有用(比如,你只想获得某一个站点内的新闻标题)。
常规网络蜘蛛是两者中相对简单的一种。
首先,你不需要预先知道目标页面的情况。
只需要在该页面中,以及在与其链接的页面中,寻找你要的关键词就可以了。
你还可以在功能中设定,忽略掉那些在同一站点下的链接,从而保证每一个结果都来源于不同的站点。
与之相对应,一个特定的网络蜘蛛通常要求你预先知道一些目标页面的情况,例如表格规划等。
举个例子,如果你搜寻的是一个页面中的新闻标题,你应该先知道限定此标题的HTML标记。
如此你才可以直接搜索页面中正确的部分。
在这种情况下,是否具备搜索该页面的所有链接的功能显得不是特别重要,因为你的网络蜘蛛很可能在别的页面中无法找到标记,不能进行工作。
运行网络蜘蛛的时间也有所不同:
你可以预先运行,也可以实时运行。
预先运行意味着当你的网络蜘蛛运行时,所有搜集到的信息都存贮在一个数据库中,以备以后使用。
很明显,如此你将不会获得最新的数据,但是如果你经常运行网络蜘蛛,这个问题也不会有什么大碍。
实时运行意味着你每次运行网络蜘蛛所获得的信息都不会被保存下来,你只能现找现用。
例如,如果你在站点设置了搜索功能,在实时状态下使用网络蜘蛛,则无论何时,只要有用户输入一个关键词并点下“发送”按钮,你的网络蜘蛛就将运行,而不是仅仅访问数据库。
尽管这可以保证你的数据总是最新的,但是却不是大多数站点的首选,因为网络蜘蛛本身运行和返回数据都需要时间——而时间就是金钱呀!
当然,所查找的资料具有高度时间敏感性的时候例外。
三、构建网络蜘蛛
那么如何用ASP构建网络蜘蛛呢?
答案是:
Internettransfercontrol(ITC)。
这个由微软提供的控件,将使你能够通过ASP程序访问Internet资源。
你可以用ITC搜寻Web页面,访问FTP服务器,甚至可以发送邮件标题。
在本文里,我们将着重讨论搜寻Web页面的功能。
有几个缺陷必须先说明一下。
第一,ASP无权访问Windows的注册表,这就使某些ITC正常存储的常量和数值不可用。
通常你可以通过设置ITC为“不使用默认值”来解决这个问题,这就需要你在运行过程中指明每一次的值。
另一个更严重的问题是关于许可证书的。
由于ASP不具备调用LicenseManager(一项Windows中的功能,可以保证组件和控件的合法使用)的功能,那么当LicenseManager检查当前组件的密钥密码,并将其与Windows注册表进行比较后,如果发现它们不同,该组件将不会工作。
因此,当你想把ITC配置到另一台没有所需密钥的计算机上时,将导致ITC崩溃。
解决的办法之一是将ITC捆绑到另一个VB组件中,由VB组件复制ITC的路径和工具,从而进行配置。
这项工作很麻烦,但不幸的是,它是必不可少的。
下面是一些例子:
你可以用下面的编码建立ITC:
setInet1=CreateObject("
InetCtls.Inet"
)
Inet1.protocol=4
'
HTTP
Inet1.accesstype=1
Directconnectiontointernet
Inet1.requesttimeout=60'
inseconds
Inet1.URL=strURL
trHTML=Inet1.OpenURL'
grabHTMLpage
现在strHTML保存着strURL指向的整个页面的HTML内容。
要建立一个常规网络蜘蛛,你现在只需要调用
instr()功能来看看你寻找的串是否在当前位置即可。
你也可以按照href标记寻找,解析当前的URL,然后把它设置到Internet控件的属性中去,接着再继续打开另一个页面。
用来查看所有链接的最好方法是使用递归。
要注意的是,尽管这种方法很易于实行,却不是非常准确和强大。
今天的许多搜索引擎都可以进行额外的逻辑检查,例如计算一个页面中某一短语重复的次数,相关字词的近似程度等,有些甚至可以用来判断所搜寻的语段与上下文的关系。
这些功能将留待我们的读者们自己去摸索。
四、特定网络蜘蛛
相对的,一个特定网络蜘蛛要复杂一些。
如我们早先提到的,一个特定网络蜘蛛会搜寻一个页面的特定部分,因而要求预先知道该部分相关的情况。
让我们先看看下面的HTML:
<
HTML>
<
HEAD>
TITLE>
MyNewsPage<
/TITLE>
METAName=&
quot;
keywords"
Content="
News,headlines"
>
METAName="
description"
Thecurrentnewsheadlines."
/HEAD>
;
BODYBGCOLOR="
#FFFFFF"
TEXT="
#000000"
LINK="
#FF3300"
VLINK="
#CC0000"
ALINK="
#0000FF"
p>
h3>
Headlines&
lt;
/h3>
/p>
!
--putheadlineshere-->
ahref="
/news/8094.asp"
Stockspricesfall<
/a>
/news/8095.asp"
Newmoviestoday<
/news/8096.asp"
Bushand&
nbsp;
Goretodebatetonight<
/news/8097.asp"
FallTVlineup<
--endheadlines-->
/BODY>
/HTML>
在这个页面内,我们只关心位于“putheadlineshere”和“endheadlines”这两个标记之间的东西。
你可以构建一个只返回该区域查找结果的功能设置:
FunctionGetText(strText,strStartTag,strEndTag)
dimintStart
intStart=instr(1,strText,strStartTag,vbtextcompare)
ifintStartthen
intStart=intStart+len(strStartTag)
intEnd=InStr(intStart+1,strText,strEndTag,vbtextcompare)
GetText=Mid(strText,intStart+1,intEnd-intStart&
nbsp;
-1)
else
GetText="
"
endif
EndFunction
按照上面构建ITC控件的例子,你可以很容易地将strHTML中的“<
”和“<
”作为参数传送到GetText中。
要注意,用于开始和结束的标记都不一定要是实际的HTML专用标记——它们可以是你想使用的任何文本界定符。
在通常情况下,你不容易找到好的HTML标记来界定搜寻区域。
你只能使用比较方便称手的标记——例如,你的首尾标记可以分别如下:
strStartTag="
/td>
td>
fontface="
arial"
size=&
quot;
2"
b>
u>
"
strEndTag="
/tr>
tr>
o:
ums>
&
一定要确定搜索的是HTML页中比较独特的标识,这样你才可以准确地获得你需要的东西。
你也可以按照你所返回的文本部分中的链接进行搜寻,不过如果你不知道那些页面的格式,你的网络蜘蛛将无功而返。
五、保存信息
在大多数情况下,你会要求将收集到的信息保存在一个数据库中,以备以后使用。
你的需求也许包括很广泛的内容,但是在此之前,你要记住以下几件事:
在你的数据库中查找最新信息
如果你经常使用网络蜘蛛去查找一个站点内的新闻标题,你要先确定比较新的标题已经存在于数据库内。
然后将其与网络蜘蛛返回的结果相比较,只添加更新过的部分。
这样可以防止你保存一大堆重复数据。
更新信息
也许你根本就不想从外部向数据库中添加新信息。
比如,如果你维护的是一个美国各州人口的网上索引,你只需要在数据库内部更新——你将不需要在表格内插入新的信息。
保存所需信息
如果你在查找标题,要确定你也同时查找了该标题指向的链接,并将其保存下来。
如果没有链接,你也应该建立一个。
例如,如果我从www.yoursite.com查找标题,并在www.mysite.com演示,而该标题与一篇在站点之外的文章有链接,那么我必须先保存http:
//www.yoursite.com这一链接,然后再保存其它链接到数据库内,这些链接才可以正常访问。
六、结论
我们已经简要介绍了如何构建一个比较完整的网络蜘蛛。
所有的基本功能都已涉及。
现在你需要做的就是再在里面加上你自己的东西。
这一类功能将被应用在一个COM对象或者一个独立的应用软件内。
在ASP中设置这项功能非常方便,但是你应该将你的编码移到另外的地方,以提高速度和安全性。
而且这样也可以令其更容易被打包和传送。
传统的通用搜索引擎,如Google、Fast、AltaVista和GoTo等正面临巨大的挑战。
挑战之一是Web信息资源呈指数级增长,搜索引擎无法索引所有页面。
据统计,目前Web上静态页面的数量超过40亿个,而且这一数量还在以平均每天730万个页面的速度递增。
在过去的几年中,尽管各种通用搜索引擎在索引技术、索引数量上有所提高,但远远无法跟上Web
本身的增长速度,即使是目前全球最大的搜索引擎Google,其索引的页面数量仅占Web总量的40%;
挑战之二是Web信息资源的动态变化,搜索引擎无法保证对信息的及时更新。
近年来的研究表明,Web上的页面平均50
天就有约50%的页面发生变化,而目前通用搜索引擎更新的时间至少需要数星期之久;
挑战之三是传统的搜索引擎提供的信息检索服务,不能满足人们日益增长的对个性化服务的需要。
只有想不到的,没有搜索不到的。
搜索引擎的三个基本原理
----1.利用蜘蛛系统程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集回来。
----2.由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息,根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。
----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,Baidu网络蜘蛛的标识为BaiDuSpider,Yahoo网络蜘蛛的标识为InktomiSlurp。
如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数据等等。
如果网站管理员发现某个蜘蛛有问题,就通过其标识来和其所有者联系。
----网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,如:
网站管理员可以通过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)生成的网页,如果要完善的处理好这些网页,网络蜘蛛需要有自己的脚本解释程序。
对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这些给网络蜘蛛的抓取带来很大的困难。
对于这类网站,如果网站设计者希望这些数据能被搜索引擎搜索,则需要提供一种可以遍历整个数据库内容的方法。
对于网页内容的提取,一直是网络蜘蛛中重要的技术。
整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件处理。
这种方式的好处在于扩充性好,以后每发现一种新的类型,就可以把其处理方式做成一个插件补充到插件管理服务程序之中。
----由于网站的内容经常在变化,因此网络蜘蛛也需不断的更新其抓取网页的内容,这就需要网络蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
----搜索引擎的更新周期对搜索引擎搜索的查全率有很大影响。
如果更新周期太长,则总会有一部分新生成的网页搜索不到;
周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。
搜索引擎的网络蜘蛛并不是所有的网站都采用同一个周期进行更新,对于一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几个小时就更新一次;
相反对于一些不重要的网站,更新的周期就长,可能一两个月才更新一次。
----一般来说,网络蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样则不用更新。
----现在大家对网络蜘蛛的工作原理有了初步的了解了吧,了解后就要在以后的网站制作中考虑蜘蛛的爬行规律,比如制作网站地图就很重要,好了,如果你有更好的见解,请到这里发表,火鸟非常愿意与你交流,共同研究网站制作技巧,尽量将自己的网站制作的符合标准,符合用户的习惯!
现代搜索引擎对网页的重要性一般用PR值来量化。
一般说来,PR值越高,反映在在搜索结果中的排名越靠前(重要新越高),当前有很多人通过很多方式来提高自己网站的PR值,除网站内部的优化外,大多数人采用的是外部链接。
如下:
PR(A)=(1-d)+d(PR(t1)/C(t1)+...+PR(tn)/C(tn))
其中PR(A)表示的是从一个外部链接站点t1上,依据Pagerank?
系统给你的网站所增加的PR分值;
PR(t1)表示该外部链接网站本身的PR分值;
C(t1)则表示该外部链接站点所拥有的外部链接数量。
大家要谨记:
一个网站的投票权值只有该网站PR分值的0.85,而且这个0.85的权值平均分配给其链接的每个外部网站。
设想一个名为的网站,被链接至PR值为4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 阿里巴巴 备考 面试 知识 准备
![提示](https://static.bdocx.com/images/bang_tan.gif)