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