摘要:
一个典型的网络蜘蛛(例如雅虎)工作的方式,是查看一个页面,并从中找到相关信息, 然后它再 从该页面的所有链接中出发,继续寻找相关的信息。以此类推,直至穷尽。很快地,就可以在数据库中获得成 千上万的页面和信息。这样的工作方式就如同一张向外发散的蜘蛛网,这正是“网络蜘蛛”这个名称的由来。 关键字:
正文:
表,这就使某些ITC正常存储的常量和数 值不可用。通常你可以通过设置ITC为“不使用默认值”来解决这个问题,这就需要你在运行过程中指明每一 次的值。
另一个更严重的问题是关于许可证书的。由于ASP不具备调用License Manager(一项Windows中的功 能,可以保证组件和控件的合法使用)的功能,那么当License Manager检查当前组件的密钥密码,并将 其与Windows注册表进行比较后,如果发现它们不同,该组件将不会工作。因此,当你想把ITC配置到另一台没 有所需密钥的计算机上时,将导致ITC崩溃。解决的办法之一是将ITC捆绑到另一个VB组件中,由VB组件复制 ITC的路径和工具,从而进行配置。这项工作很麻烦,但不幸的是,它是必不可少的。
下面是一些例子:
你可以用下面的编码建立ITC:
set Inet1 = CreateObject("InetCtls.Inet")
Inet1.protocol = 4 HTTP
Inet1.accesstype = 1 Direct connection to internet
Inet1.requesttimeout = 60in seconds
Inet1.URL = strURL
trHTML = Inet1.OpenURLgrab HTML page
现在strHTML保存着strURL指向的整个页面的HTML内容。要建立一个常规网络蜘蛛,你现在只需要调用 instr() 功能来看看你寻找的串是否在当前位置即可。你也可以按照href标记寻找,解析当前的 URL,然后把它设置到Internet 控件的属性中去,接着再继续打开另一个页面。用来查看所有链接的最 好方法是使用递归。
要注意的是,尽管这种方法很易于实行,却不是非常准确和强大。今天的许多搜索引擎都可以进行额外的 逻辑检查,例如计算一个页面中某一短语重复的次数,相关字词的近似程度等,有些甚至可以用来判断所搜寻 的语段与上下文的关系。这些功能将留待我们的读者们自己去摸索。
四、特定网络蜘蛛
相对的,一个特定网络蜘蛛要复杂一些。如我们早先提到的,一个特定网络蜘蛛会搜寻一个页面的特定部 分,因而要求预先知道该部分相关的情况。让我们先看看下面的HTML:
<HTML><HEAD><TITLE>My News Page</TITLE><META Name=&quo t;keywords" Content="News, headlines"><META Name="descr iption" Content="The current news headlines."></HEAD> ;<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF3300 "VLINK="#CC0000" ALINK="#0000FF"><p><h3>Headlines&l t;/h3></p><!--put headlines here--><a href="/news/8094.asp ">Stocks prices fall</a><a href="/news/8095.asp">Ne w movies today</a><a href="/news/8096.asp">Bush and&nb sp;Gore to debate tonight</a><a href="/news/8097.asp"> Fall TV lineup</a><!--end headlines--></BODY></HTML>
在这个页面内,我们只关心位于“put headlines here”和 “end headlines”这 两个标记之间的东西。你可以构建一个只返回该区域查找结果的功能设置:
Function GetText(strText, strStartTag, strEndTag)
dim intStart
intStart = instr(1, strText, strStartTag, vbtextcompare)
if intStart then
intStart = intStart + len(strStartTag)
intEnd = InStr(intStart + 1, strText, strEndTag, vbtextcompar e)
GetText = Mid(st
[1][2][3]