当前位置: 首页 > 图文教程 > 网络编程 > ASP > 也谈采集入库的技术

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

ASP 中的 也谈采集入库的技术


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 60 ::
收藏到网摘: n/a


落伍的贴也看了很多了,发现了很多讲小偷技术的,如精华贴里的--小偷程序原理和简单示例:
[url]http://www.im286.com/viewthread.php?tid=407182&extra=page%3D1[/url] 等等,也有提供采集程序下载的,但我还没看到一篇完整的入库的文章,或许是我看的贴少吧。虽然不是很深奥,我还是讲讲吧,希望高手别见笑啦,以前发了个原创的影视系
统,却没落伍,这次再求落伍啦,希望大家帮顶下,也希望我能落伍!!
入库也和小偷一样,要先得到需入库的部分,我这里以[url]http://www.skycn.com/article/77.html[/url] 为例了
<%
dim url,mydate
url="http://www.skycn.com/article/77.html" '定义url地址
Set OXML = server.CreateObject("Microsoft.XMLHTTP")
'下面定义两个函数,得到数据
Private Function BytesToBstr(body) '利用流进行中文编码
Set ADOS = Server.CreateObject("ADODB.Stream")
Dim Bdat
Bdat=Body
ADOS.Type = 1
ADOS.Mode =3
ADOS.Open
ADOS.Write Bdat
ADOS.Position = 0
ADOS.Type = 2
ADOS.Charset = "GB2312"
BytesToBstr = ADOS.ReadText
ADOS.Close
End Function
Public Function GetData(byref url) '利用OXML得到数据
'on error resume next
SourceCode = OXML.open ("GET",url,false)
OXML.send()
if OXML.readystate<>4 then exit function
GetData = BytesToBstr(OXML.responseBody)'
if err.number<>0 then err.Clear
End Function
mydate=getdata(url)
mydate=Replace(mydate,chr(34),"") '去掉一些特殊字符,如双引号等,看自己情况定
mydate=Replace(mydate,chr(16),"")
response.write mydate
%>
我们就得到了以下的数据:
'''''''''''''''''''''''''code start''''''''''''
省列去部分..............
href='../article/1034.html'>宽带用户需注意的七大安全</A><br><br></td></tr></table> </td> <td
width=20></td> <td vAlign=top width=540> <table border=0 width=540 borderColorDark=#ffffff
borderColorLight=#cccccc cellPadding=0 cellSpacing=0> <tr><td width='100%' align='center'
bgcolor='#CED7F1' height='20'><b><font color='#000000'>03月10日值得注意病毒列表
</font></b> <b>访问次数:</b>24345</td></tr><tr><td
bgcolor='#000000' height='1'></td></tr><tr><td width='100%' align='center'><br><b>作者:</b>
瑞星 <b>来源:</b><font color=#000000>瑞星</font> <b>加入时间:
</b>2006-03-10 </td></tr><tr><td><br> 据瑞星全球反病毒监测
网介绍,今日有一个病毒特别值得注意,它是:“hotmail蠕虫(Worm.Hotmatom)”病毒。该病毒是全球
第一个专门针对Hotmail编写的蠕虫病毒,当用户登陆到MSN Hotmail发送邮件的时候,会被偷偷插入带毒
链接,收信人点击后就可能中毒。<br><br> 本日热门病毒:
<br><br> “hotmail蠕虫(Worm.Hotmatom)”病毒:警惕程度★★★☆,蠕虫
病毒,通过MSN Hotmail传播,依赖系统:WIN9X/NT/2000/XP。<br><br> 病毒
感染计算机后,会把自己复制到“windows”目录下,病毒文件名为“dho.exe”。病毒会修改注册表,每
次打开计算机后都自动运行,然后在后台监视用户的IE浏览器。当用户登陆到MSN Hotmail发送邮件时,
病毒会在发送的邮件后插入病毒文字和链接:“Hi, Happy San Valentin Day Download you Postcards
from http://***.miarroba.com(情人节到了,去**网站下载贺卡吧)”,用户点击该链接后就会中毒。
<br><br> 反病毒专家建议电脑用户采取以下措施预防该病毒:建立良好的安全
习惯,不打开可疑邮件和可疑网站;关闭或删除系统中不需要的服务;很多病毒利用漏洞传播,一定要及
时给系统打补丁;安装专业的防毒软件进行实时监控,平时上网的时候一定要打开防病毒软件的实时监控
功能。<br><br><iframe name=import_frame width=1 height=1
src=http://iplog.skycn.com/articlefrom.php?id=77 frameborder=no></iframe></td></tr><TR><TD
bgColor=#cccccc height=1></TD></tr><tr><td><b><br>相关文章:</b></td></tr> <tr><td><li
type=circle> <A href='../article/2887.html' target=_blank title='阅读文章[QQ又带新病毒:恐怖
的智能流氓软件]'>QQ又带新病毒:恐怖的智能流氓软件</A><br><li type=circle> <A
href='../article/827.html' target=_blank title='阅读文章[03月08日值得注意病毒列表]'>03月08日
值得注意病毒列表</A><br><li type=circle> <A href='../article/1126.html' target=_blank
title='阅读文章[失恋日记实为电脑病毒 疑为学生失恋后制造]'>失恋日记实为电脑病毒 疑为学生失恋
后制造</A><br><li type=circle> <A href='../article/102.html' target=_blank title='阅读文章[
黑客盯上“血馒头”!6成论坛含病毒链接]'>黑客盯上“血馒头”!6成论坛含病毒链接</A><br><li
type=circle> <A href='../article/2885.html' target=_blank title='阅读文章[病毒总结:狗年春节
间木马和QQ病毒多发]'>病毒总结:狗年春节间木马和QQ病毒多发</A><br><li type=circle> <A
href='../article/995.html' target=_blank title='阅读文章[四类病毒可能在春节发作 专家提醒应及
时防范]'>四类病毒可能在春节发作 专家提醒应及时防范</A><br><li type=circle> <A
href='../article/3056.html' target=_blank title='阅读文章[专家表示:BT下载不会耗费硬盘 更不
会带来病毒]'>专家表示:BT下载不会耗费硬盘 更不会带来病毒</A><br><li type=circle> <A
href='../article/1229.html' target=_blank title='阅读文章[千万QQ表情暗藏病毒:背后另有惊人秘
密]'>千万QQ表情暗藏病毒:背后另有惊人秘密</A><br><li type=circle> <A
href='../article/938.html' target=_blank title='阅读文章[微软live遭钓鱼网站仿冒 病毒伪装MSN
测试版传播]'>微软live遭钓鱼网站仿冒 病毒伪装MSN测试版传播</A><br><li type=circle> <A
href='../article/315.html' target=_blank title='阅读文章[上网不用防火墙!一招克死所有病毒]'>
上网不用防火墙!一招克死所有病毒</A><br></td></tr><tr><td><b><br>相关软件:</b></td></tr>
<tr><td><li type=circle> <A href='../soft/6805.html' target=_blank title='浏览软件[金山毒霸
引擎病毒库升级包(2006.03.09)]'>金山毒霸引擎病毒库升级包(2006.03.09)</A><br><li type=circle>
<A href='../soft/3722.html' target=_blank title='浏览软件[F-Secure Anti-Virus 病毒码省列去部
分..............
''''''''''''''''''''''''''''code end '''''''''''''''''
我们所需要的也就定义在mydate里了,但如何来定位呢?大家都知道asp里有left()和right() 函数,我
们就用它们来做。我们先来定个函数,
Public Function finddate(byref str,byref start,byref last,byref n)
If Instr(lcase(str),lcase(start))>0 then
select case n
case 0 '左右都截取(都取前面)(去处关键字)
finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))-Len(start)+1)
finddate=Left(finddate,Instr(lcase(finddate),lcase(last))-1)
case 1 '左右都截取(都取前面)(保留关键字)
finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))+1)
finddate=Left(finddate,Instr(lcase(finddate),lcase(last))+Len(last)-1)
end select
Else
finddate=""
End if
end function
这个就是截取里面内容的函数了
下面我们来得到文章标题:03月10日值得注意病毒列表
dim title,artor,content,wherefrom
title=finddate(mydate,"width=540 borderColorDark=#ffffff
borderColorLight=#cccccc",</font></b>,1)
这样,我们就把标题定位到了个小范围内了:width=540 borderColorDark=#ffffff
borderColorLight=#cccccc cellPadding=0 cellSpacing=0> <tr><td width='100%' align='center'
bgcolor='#CED7F1' height='20'><b><font color='#000000'>03月10日值得注意病毒列表</font></b>
在精确定位下就行了,
title=finddate(title,"<font color='#000000'>","</font></b>",0)
现在,title的值就是:03月10日值得注意病毒列表
artor=finddate(mydate,"作者:</b>"," <b>",0) '得到作者
wherefrom=finddate(mydate,"来源:</b><font color=#000000>","</font> ",0)'得到来源
content=finddate(mydate,"</td></tr><tr><td><br>","<br><br><iframe name=import_frame",0)'得到
正文内容
至此,我们已经得到了我们想要的数据了,在下来就是把title,artor,content,wherefrom 入库了,
其实采集入库就怎么简单了,只是在用finddate()是要注意里面byref start和byref last,最好是
mydate里面唯一的,这样便于定位。如不是唯一的,我们可以先缩小范围再来精确定位。有必要时可以弄
个循环来得到数据。完整的代码如下
''''''''''''''''''''code start'''''''''''''''''''
<%
dim url,mydate
url="http://www.skycn.com/article/77.html"
Set OXML = server.CreateObject("Microsoft.XMLHTTP")
'下面定义两个函数,得到数据
Private Function BytesToBstr(body) '利用流进行中文编码
Set ADOS = Server.CreateObject("ADODB.Stream")
Dim Bdat
Bdat=Body
ADOS.Type = 1
ADOS.Mode =3
ADOS.Open
ADOS.Write Bdat
ADOS.Position = 0
ADOS.Type = 2
ADOS.Charset = "GB2312"
BytesToBstr = ADOS.ReadText
ADOS.Close
End Function
Public Function GetData(byref url)
'on error resume next
SourceCode = OXML.open ("GET",url,false)
OXML.send()
if OXML.readystate<>4 then exit function
GetData = BytesToBstr(OXML.responseBody)'
if err.number<>0 then err.Clear
End Function
mydate=getdata(url)
mydate=Replace(mydate,chr(34),"") '去掉一些特殊字符,如双引号等,看自己情况定
mydate=Replace(mydate,chr(16),"")
Public Function finddate(byref str,byref start,byref last,byref n)
If Instr(lcase(str),lcase(start))>0 then
select case n
case 0 '左右都截取(都取前面)(去处关键字)
finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))-Len(start)+1)
finddate=Left(finddate,Instr(lcase(finddate),lcase(last))-1)
case 1 '左右都截取(都取前面)(保留关键字)
finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))+1)
finddate=Left(finddate,Instr(lcase(finddate),lcase(last))+Len(last)-1)
end select
Else
finddate=""
End if
end function
dim title,artor,content,wherefrom
title=finddate(mydate,"width=540 borderColorDark=#ffffff
borderColorLight=#cccccc","</font></b>",1)
title=finddate(title,"<font color='#000000'>","</font></b>",0)
artor=finddate(mydate,"作者:</b>"," <b>",0)
wherefrom=finddate(mydate,"来源:</b><font color=#000000>","</font> ",0)
content=finddate(mydate,"</td></tr><tr><td><br>","<br><br><iframe name=import_frame",0)
call intomdb(title,artor,content,wherefrom)
function intomdb(title,artor,content,wherefrom)
'''''''''''''''''''''''''''''''''''
'''这个是入库的函数,自己定义下就可以了
'''''''''''''''''''''''''''''''''''
end function
%>
我这里只是以采集文章为例,其它的采集软件等都是这个道理。
说了怎么多,我也不知道各位能不能看懂,如看不动那可能是我不会表达了,大家见谅。毕竟我没读过文
科,^_^
我只是讲原理,程序是靠自己写的,要采集的速度快,你还可以写成exe的啊,这样比较快,占内存少