最近网上流行着一些采集程序,更多人拿着这些东西在网上叫卖,很多不太懂的人看着那些程序眼羡,其实如果你懂一些ASP,了解自动采集程序的原理后,你会感觉实现自动化也是那么的简单. 原理及优点:通过XML中的XMLHTTP组件调用其它网站上的网页,然后批量截取或替换原有的信息使其转化成变量后再一一储存到数据库中。其主要的优点便是无需再手工添加大量的信息了,可以指定对某一个站信息的截取进行批量录入,达到省时省力的目的。与其单纯的ASP小偷程序不同的是:它已经不再依赖其目标网站。 简单事例:
1 <% 2 '声明取得目标信息的函数,通过XML组件进行实现。 3 FunctionGetURL(url) 4 SetRetrieval=CreateObject('Microsoft.XMLHTTP') 5 WithRetrieval 6 .Open'GET',url,False 7 .Send 8 GetURL=bytes2bstr(.responsebody) 9 '对取得信息进行验证,如果信息长度小于100则说明截取失败 10 iflen(.responsebody)<100then 11 response.write'获取远程文件<ahref='&url&'target=_blank>'&url&'</a>失败。' 12 response.end 13 endif 14 15 EndWith 16 SetRetrieval=Nothing 17 EndFunction 18 '二进制转字符串,否则会出现乱码的! 19 functionbytes2bstr(vin) 20 strreturn='' 21 fori=1tolenb(vin) 22 thischarcode=ascb(midb(vin,i,1)) 23 ifthischarcode<&h80then 24 strreturn=strreturn&chr(thischarcode) 25 else 26 nextcharcode=ascb(midb(vin,i+1,1)) 27 strreturn=strreturn&chr(clng(thischarcode)*&h100+cint(nextcharcode)) 28 i=i+1 29 endif 30 next 31 bytes2bstr=strreturn 32 endfunction 33 '声明截取的格式,从Start开始截取,到Last为结束 34 FunctionGetKey(HTML,Start,Last) 35 filearray=split(HTML,Start) 36 filearray2=split(filearray(1),Last) 37 GetKey=filearray2(0) 38 EndFunction 39 40 DimSoftid,Url,Html,Title 41 42 '获取要取页面的ID 43 44 SoftId=Request('Id') 45 46 Url='http://www3.skycn.com/soft/'&SoftId&'.html' 47 48 Html=GetURL(Url) 49 50 '以截取天空软件的软件名为例子 51 52 Title=GetKey(Html,'<fontcolor='#004FC6'size='3'>','</font></b></td></tr>') 53 54 '打开数据库,准备入库 55 56 dimconnstr,conn,rs,sql 57 58 connstr='DBQ='+server.mappath('db1.mdb')+';DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};' 59 60 setconn=server.createobject('ADODB.CONNECTION') 61 62 conn.openconnstr 63 64 setrs=server.createobject('adodb.recordset') 65 66 sql='select[列名]from[表名]where[列名]=''&Title&''' 67 68 rs.opensql,conn,3,3 69 70 ifrs.eofandrs.bofthen 71 72 rs('列名')=Title 73 74 rs.update 75 76 setrs=nothing 77 78 endif 79 80 setrs=nothing 81 82 Response.Write'采集完毕!' 83 84 %>
|