说说采集加入库(菜鸟版)
来源:
互联网
日期:2006-5-15
第一次听到小偷程序很好奇,于是下了个研究研究。看到小偷使用的几个主要函数,instr,mid,replace...等等,然后我结合了数据库将采集的数据写进去,很有成就感,呵呵,我相信还有好写朋友不知道怎么弄,下面我来说说我懂的一点皮毛! 先说说几个函数的用途吧,这个对新手来说是最主要的。。。
1 : instr(start,string1,string2,compare) 这个函数返回string2在string1中第一次出现的位置,start表示开始搜索的位置,可省略(省略时表示从string1开始位置搜索),compare表示在计算子字符串时使用的比较类型的数值(我从来没用过,一般都省略好了)
说的可能不够清楚,举几个例子 num = Instr(1, "SearchString", "c"),返回为num=5,因为"c"在"SearchString"中第一次出现的位置是5 num = Instr("SearchString", "c"),返回为num=5,1省略表示从开始搜索,同上一样 num = Instr(5, "SearchString", "c"),返回还是5,但Instr(6, "SearchString", "c")返回0,因为从第6位开始找不到字符"c"了
2 : mid(string,start,length) 这个函数从字符串中返回指定数目的字符。 如我们想从"abcdefghijklmn"中得到"efg",可以用如下形式mid("abcdefghijklmn",5,3)则返回"efg",式中5表是"e"开始的位置,3表示字符串长度 写到这里我们结合前面instr函数来写写怎么获得"efg" 首先,用instr函数得到"efg"字符出现的位置,如下start=instr("abcdefghijklmn","e"),如此mid("abcdefghijklmn",5,3)中的5就可以用start代替,mid("abcdefghijklmn",start,3)同样返回"efg" 如果我们不知道所要获得的字符串长度,可以再用一次instr函数先得到"h"出现的位置,如下end=instr("abcdefghijklmn","h"),如此我们可以得到字符串的长度length=end-start,(有人可能会说用len("efg")不是可以得到"efg"的长度吗?,问题是当我们连我们要得到什么数据都不知道,而只知道字符串结束后的第一个字符时。。。。小偷程序就是这样)
3 : split(string1,string2) 废话不说,直接讲怎么用吧,假如我们有如下字符传"abxcdfxfghixhnmgsff",我们用str=split("abxcdfxfghixhnmgsff","x"),结果就是str(0)="ab",str(1)="cdf",str(2)="fghi",str(3)="hnmgsff",看出什么了吗,split(string1,string2)用string2分割string1,返回是一个数组,大家可以从例子看出。
说到split(string1,string2)函数随便说说另一个很有用的函数ubound(string),返回指定数组维数的最大可用下标。 如上面得到的str,我们用ubound(str),返回就是3,因为str数组最大可用下标就是3
关于函数的详细大家可以查看我附件中的 VBSCRIPT 速查手册.chm
其实上面的说了等于白说,还是举几个例子比较容易懂 如我们要获得http://read.hjsm.tom.com/book/6094/html/2001.html这个网页下的文章标题,和内容
用getHTTPPage(url)函数得到网页源码,getHTTPPage(url)函数我用了前些天写采集入库技术的作者编的函数,源码请看http://www.im286.com/viewthread. ... amp;extra=page%3D18
用法如下 url="http://read.hjsm.tom.com/book/6094/html/2001.html" http=getHTTPPage(url)
得到http=
<HTML><HEAD><script src="/stat/counter.php?bookid=6094"></script><META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=gb2312"><META HTTP-EQUIV="Content-Language" CONTENT="zh-CN"><LINK REL="stylesheet" TYPE="text/css" HREF="book.css" TITLE="formal"><TITLE>新宋</TITLE></HEAD><body bgcolor="#E4ebf1" text="#000000"><script language="javascript" src="/chaphead.js"></script><A title="去首页看看" HREF="http://www.hjsm.net"><font color=blue>幻剑书盟</font></a> > <A title="去作者会客室坐坐" HREF="http://www.hjsm.net/author/1823/index.php"><font color=blue>阿越的会客室</font></a> > <A title="去该书首页瞧瞧" HREF="http://www.hjsm.net/book/6094/index.php"><font color=blue>新宋</font></a> > <A title="去看书吧" HREF="http://www.hjsm.net/book/6094/html/contents.html"><font color=blue>新宋目录</font></a><BR><P><TABLE WIDTH=650 ALIGN=CENTER><TR><TD COLSPAN=3 width=100%><DIV class=headtitle align=left><B>第一卷 十字</B></div><BR> <DIV class=title align=center>第一节 熙宁二年</div><HR> <p>我完全不记得我是怎么样来到这个世界了。但是当我知道自己居然成为又一位回到古代的同志,并且是回到了被陈寅恪称之为“华夏民族之文化,历数千记得曾经有人写过最想生活的十个历史时期,宋仁宗柳永的时代赫然入选,现在虽然是西。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。只有大户人家才用得起了。<p>唐棣虽然不太看得起生意人,但是对我这种新奇的发明,却也很是赞叹。不到一个冬季,我就由一无所有变成一个小财主,也是唐棣所料想不到的。但是我所得意的却是这是自己来到古代后,给这个世界带来的第一个变化。 </TD></TR><TR height=60 valign=center><td colspan=3> </td></tr><TR align=center><script language="javascript" src="pagescript.js"></script><TR VALIGN=BOTTOM HEIGH=60><TD COLSPAN=3><HR>© <A HREF="http://www.hjsm.net"><font color=blue>幻剑书盟</font></A>整理</TD></TR></TABLE>
中间省略内容n多
我们如何先得到“第一节 熙宁二年”这个标题呢,用instr()函数得到"<DIV class=title align=center>"字符串出现的位置,如下start=instr(http,"<DIV class=title align=center>")然后加上"<DIV class=title align=center>"的长度len("<DIV class=title align=center>")即得到标题出现的首位置,再用instr()函数从start开始查找"</div>"第一次出现的位置,end=instr(start,http,"</div>"),到此我们就可以算出标题的长度 length=end-(start+len("<DIV class=title align=center>")) 用mid()函数得到标题 biaoti=mid(http,start+len("<DIV class=title align=center>"),length)
按照上面的方法还可以得到文章的内容,具体不在这废话,大家可以从附件中找到完整的代码,里面有详细的注释 并且简单补全了前几天那位作者的入库函数,大家可以看到程序如何获得数据,并加到数据库中,看着实例学习是我认为最简单的学习方法,程序正常工作后的那个成就感。。。。。。。奥,,,,,,,呵呵
更多的说说采集加入库(菜鸟版)请到论坛查看: http://BBS.TC711.COM
【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】
来源:
互联网
日期:2006-5-15
|
|
|