决定原创的超实用技术:自己做采集
其实,我觉得这贴一定要加分,甚至可以加精华了,我写的故事都是失败故事帮不了大家所以今天给大家一些实用点的,我写了N次长
文章了,此次都写长
文章的,没写过一篇短的,虽然对于好多老手来说不是什么但我知道对于新手来说是很关键的,就是教你
如何订做采集器,把技术给你们了,首先,我先给大家介绍几个常用的函数.
也许你会问,到底什么是函数?是啊,新手啊有些是给了函数也不会用的,我自己以前也是这样,所以,我会详细解析的.先贴出来吧:
第一个是:用XML获取网页内容的函数
Function
GetPage(url)
Set Retrieval =
CreateObject("Microsoft.XMLHTTP")
With
Retrieval
.Open "Get", url, False, "",
""
.Send
GetPage = BytesToBstr(.ResponseBody)
End With
Set
Retrieval = Nothing
End
Function
这个函数怎么用呢?用法是这样的,首先要先定义了先,到你想用的时候,你就GetPage然后打上括号,然后在括号里面写网址.注意的是如果网址是
字符的而不是函数的,就要用""双引号括起来,如果是变量就不用了,如果是字符加变量就要在中间加个&,明白吗?例如我想获取
http://www.abc.com/abc/abc.htm的内容的话就写成
GetPage("http://www.abc.com/abc/abc.htm")
当然了不能单用的要用的时候把他同时赋
值给变量了,例如变量是a,那就是GetPage("http://www.abc.com/abc/abc.htm")
了,呵呵.
第二个函数是,获取你需要的内容.
Function
GetContent(str,start,last,n)
If
Instr(lcase(str),lcase(start))>0 then
select case n
case 0
'左右都截取(都取前面)(去处关键字)
GetContent=Right(str,Len(str)-Instr(lcase(str),lcase(start))-Len(start)+1)
GetContent=Left(GetContent,Instr(lcase(GetContent),lcase(last))-1)
case 1
'左右都截取(都取前面)(保留关键字)
GetContent=Right(str,Len(str)-Instr(lcase(str),lcase(start))+1)
GetContent=Left(GetContent,Instr(lcase(GetContent),lcase(last))+Len(last)-1)
case 2
'只往右截取(取前面的)(去除关键字)
GetContent=Right(str,Len(str)-Instr(lcase(str),lcase(start))-Len(start)+1)
case 3
'只往右截取(取前面的)(包含关键字)
GetContent=Right(str,Len(str)-Instr(lcase(str),lcase(start))+1)
case 4
'只往左截取(取后面的)(包含关键字)
GetContent=Left(str,InstrRev(lcase(str),lcase(start))+Len(start)-1)
case 5
'只往左截取(取后面的)(去除关键字)
GetContent=Left(str,InstrRev(lcase(str),lcase(start))-1)
case 6
'只往左截取(取前面的)(包含关键字)
GetContent=Left(str,Instr(lcase(str),lcase(start))+Len(start)-1)
case 7
'只往右截取(取后面的)(包含关键字)
GetContent=Right(str,Len(str)-InstrRev(lcase(str),lcase(start))+1)
case 8
'只往左截取(取前面的)(去除关键字)
GetContent=Left(str,Instr(lcase(str),lcase(start))-1)
case 9
'只往右截取(取后面的)(包含关键字)
GetContent=Right(str,Len(str)-InstrRev(lcase(str),lcase(start)))
end select
Else
GetContent=""
End if
End
function
有注释的你看到了吗?分别是N=0到N=9时候的区别,函数的用法是GetContent(str,start,last,n),STR那里写你的字符串,star那里写你开头截取
的部分,last那里写你结为部分那么系统就会确定到你所要截取的部分了,简答吧?就一句就行了,呵呵.这里,很关键很关键很关键的一个问题是,
新手经常遇到的问题是,怎么处理""呢?这问题很关键,网上流传什么变成单引号啊,什么用vbscript引用啊,什么变成&"什么的,都胡说,为了你省
时间我告诉你吧,其实学过VBSCRIPT的都知道,当处理的字符中有双引号的应该变成双双引号,就是""变成"""",呵呵"就变成"","""""就变
成""""""""""反正是两倍了,呵呵简单吧?新手经常因为这个兜很多弯重复截取N次才能得到自己想要的内容,现在知道了这个是不是爽好多了?
第三个函数:内码转换,很多时候出现乱码的可能是人家的是asp,net开发的时候软件是不是官方中文版的,也许是你采集的
网络本来就是标注用其他非中文的码的原因很多但转好了就没错了,照写就是,呵呵,
Function
BytesToBstr(body)
dim
objstream
set objstream =
Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
set
objstream = nothing
End
Function
这个函数简单吧?只有body了,呵呵你肯定会用了,
还有采集的很多注意的内容,关于入库啊,如何用日期随机生成文件名啊,如何用关键字做文件名更利于采集啊,还有如何做定时器定是采集啊等等,还有很多常用的小技巧要告诉大家,但这次就先到这!希望大家能喜欢