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

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 55 ::
收藏到网摘: 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的啊,这样比较快,占内存少