📄 ba2.htm
字号:
src=” 来开头,用往后遇到的第一个”>”来结尾,这样一来就清楚了,只要把代码中所有的满足以上条件的语句删掉,这样代码中就不会出现直接图片信息,我们参考以下的一段代码:</font></p>
<p align="justify"><font face="宋体" size="-1">Public Function picFilter(downCode)'定义一个过滤图片信息的过程</font></p>
<p align="justify"><font face="宋体" size="-1">Dim pStart As Long,
pStop As Long</font></p>
<p align="justify"><font face="宋体" size="-1">Dim pString1 As String,
pString2 As String</font></p>
<p align="justify"><font face="宋体" size="-1">pString1 = "<img"</font></p>
<p align="justify"><font face="宋体" size="-1">pString2 = ">"
'分别将两个关键词定义</font></p>
<p align="justify"><font face="宋体" size="-1">pStart = InStr(downCode,
pString1)'找到第一个图片信息的起始位置</font></p>
<p align="justify"><font face="宋体" size="-1">If pStart <>
0 Then '如果代码中有图片信息的话</font></p>
<p align="justify"><font face="宋体" size="-1">pStop = InStr(pStart,
downCode, pString2) + 1 '从上面找的起始部位开始找到第一个用于结束图片信息的”>”</font></p>
<p align="justify"><font face="宋体" size="-1">Do While pStart <>
0 '只要仍旧有图片信息</font></p>
<p align="justify"><font face="宋体" size="-1">Mid(downCode, pStart,
pStop - pStart) = Space(pStop - pStart) '将代码中的图片信息用空格代替,实现删除效果</font></p>
<p align="justify"><font face="宋体" size="-1">pStart = InStr(pStop,
downCode, pString1)'重复上面的过程,删除其他的图片信息</font></p>
<p align="justify"><font face="宋体" size="-1">If pStart = 0 Then
Exit Do '没有图片信息后,退出循环</font></p>
<p align="justify"><font face="宋体" size="-1">pStop = InStr(pStart,
downCode, pString2, 1) + 1</font></p>
<p align="justify"><font face="宋体" size="-1">Loop</font></p>
<p align="justify"><font face="宋体" size="-1">picFilter=downCode
'将处理过后的代码返回过程函数</font></p>
<p align="justify"><font face="宋体" size="-1">End Function</font></p>
<p align="justify"><font face="宋体" size="-1">接下来只要使用</font></p>
<p align="justify"><font face="宋体" size="-1">lastResult=picFilter
lastResult</font></p>
<p align="justify"><font face="宋体" size="-1">就实现了对临时变量中搜索结果代码的图片信息去除工作,以此类推,很容易去掉诸如”<font”、”<b”等信息。</font></p>
<p align="justify"><font face="宋体" size="-1"> 上面所说的是一种方法,但我们知道HTML语法中关键词很多,如果都用以上的条件过滤的话,会使程序的效率大大降低,运行速度也会减慢很多。有没有更好的方法?有,如果是有心人的话,您就会发现不同的搜索引擎返回的结果有其独特的编排方式,我们仍旧以雅虎为例,你只要察看其返回的结果源代码就会发现:每一条信息的链接和主题部分排列都是以“<LI>”开始,以“<A>”结束,而在“<A>”
和接下来的第一个“<”之间的部分是该主题的简单描述,这样我们可以用下面的代码来将雅虎搜索结果代码中的有用信息提炼起来:</font></p>
<p align="justify"><font face="宋体" size="-1">Public Function yahooFilter(downCode)</font></p>
<p align="justify"><font face="宋体" size="-1">Dim sString1 As String,
sString2 As String, sString3 As String</font></p>
<p align="justify"><font face="宋体" size="-1">Dim sStart As Long,
sStop As Long</font></p>
<p align="justify"><font face="宋体" size="-1">Dim string1 As String,
string2 As String, lastString as string</font></p>
<p align="justify"><font face="宋体" size="-1">sString1 = "<LI>"</font></p>
<p align="justify"><font face="宋体" size="-1">sString2 = "</A>"</font></p>
<p align="justify"><font face="宋体" size="-1">sString3 = "<"</font></p>
<p align="justify"><font face="宋体" size="-1">sStart = InStr(downCode,
sString1)'取得第一条主题信息的起始位置</font></p>
<p align="justify"><font face="宋体" size="-1">Do While sStart <>
0</font></p>
<p align="justify"><font face="宋体" size="-1">sStop = InStr(sStart,
downCode, sString2)</font></p>
<p align="justify"><font face="宋体" size="-1">string1 = Mid(downCode,
sStart + 4, sStop - sStart) '将第一条主题信息存放在string1变量中</font></p>
<p align="justify"><font face="宋体" size="-1">sStart = InStr(sStop,
downCode, sString1) '从第一条主题信息的结束部位开始查找该主题的简单描述</font></p>
<p align="justify"><font face="宋体" size="-1">sStart = sStop +
4</font></p>
<p align="justify"><font face="宋体" size="-1">sStop = InStr(sStart,
downCode, sString3) '取得该主题描述部分的结束位置</font></p>
<p align="justify"><font face="宋体" size="-1">If sStop = sStart
Then '判断只有主题而没有描述的信息</font></p>
<p align="justify"><font face="宋体" size="-1">string2 = ""</font></p>
<p align="justify"><font face="宋体" size="-1">ElseIf sStop <>
sStart Then</font></p>
<p align="justify"><font face="宋体" size="-1">string2 = Mid(downCode,
sStart, sStop - sStart - 1) '取出主题描述部分</font></p>
<p align="justify"><font face="宋体" size="-1">End If</font></p>
<p align="justify"><font face="宋体" size="-1">lastString = lastString
+ "<p>" + string1 + string2 '将提炼的结果存放在临时变量中</font></p>
<p align="justify"><font face="宋体" size="-1">sStart = InStr(sStop,
downCode, sString1)'重新定位下一条信息的起始位置</font></p>
<p align="justify"><font face="宋体" size="-1">Loop'循环</font></p>
<p align="justify"><font face="宋体" size="-1">yahooFilter = lastString'</font></p>
<p align="justify"><font face="宋体" size="-1">End Function</font></p>
<p><font face="宋体" size="-1"><img height="333" hspace="12" src="../pic/ll/0004a.gif" tppabs="http://www.pcbyte.net/program/000202.gif" width="300">
</font></p>
<p align="justify"><font face="宋体" size="-1">经过了上面复杂的提炼,然后将提炼的结果写到一个网页文件中,然后调用浏览器显示,会出现整整齐齐的结果,象图二一样:</font></p>
<p align="justify"><font face="宋体" size="-1"> 返回头来我们看一下现在比较流行的搜索软件,比如
SearchX98、Crazysearch、Inforian Quest 99,无论他们说明写的再好,也跳不出上面所说的原理,但他们各自有自己的一些独特之处,比如SearchX98
能够连续搜索多个引擎,其实就是发出一条搜索指令后,程序本身连续在各个搜索引擎发出搜索指令,将返回的结果经过简单的处理生成一个页面,其他的内容搜索更是最简单的直接发出搜索指令而已。而对于
Crazysearch,你只要打开注册表,就会发现其中文搜索只能搜索中文雅虎,英文只能搜索Excite,但号称注册版本能够搜索1000条记录,其实您只要分析一下雅虎的搜索代码就会发现,其中有一个关键词是
“n=”,代表一次搜索返回的结果数目;另外一个是“b=”,代表从第几条记录开始显示,就这两个关键词起到了这么重大的作用,但Crazysearch的独特之处在于返回的搜索结果以表格方式排列,直观醒目。最后要推荐的是Inforian
Quest 99,尽管其原理也超脱不了以上的范围(您只要打开其目录下的site子目录中的文件就清楚了),但我还是极力推荐,因为无论是从站点的数量,搜索范围的广泛,搜索的速度,结果的详细,没有能过超过Inforian
Quset 99的,而且要差很多。当然基于对国产软件的支持,我们还是可以对上面的两个软件寄予厚望。同是由于本人水平有限,难免有疏漏之处,敬请大家指正。</font>
<br>
</td>
</tr>
</center>
<tr>
<td width="100%" class="unnamed1">
<p align=right><a href="ba1.htm">(上一页)</a>---<a href="ba3.htm">(下一页)</a></p>
</td>
</tr>
<tr>
<td width="100%" class="unnamed1">
</div>
</td>
</tr>
<!--msnavigation--></tbody>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -