|
ASP采集其它就是利用微软自带的XMLHTTP组件取得远程页面的源代码,再经过程序的过滤替换处理转换成我们想要的数据。我们也不管用什么,反正我教你的就是用一段代码取得目标代码, 再把目标代码加工一下。然后直接显示啊还是写入数据库。就这么简单! 引用组件CreateObject("Microsoft.XMLHTTP") --->取得目标代码(get) ---> 数据处理(截取,过滤,替换) ---> 直接显示(小偷)或 写入数据库(采集) 说了这么多是要开始实战了. 二话不说,先写个刚刚讲到的引用组件和取得代码的函数 ' 获取远程HTML Function GetURL(url) Set Retrieval = CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "GET", url, False .Send GetURL = .responsebody if len(.responsebody)<100 then response.write "获取远程文件 <a href="&url&" target=_blank>"&url&"</a> 失败。" response.end end if End With Set Retrieval = Nothing End Function 上面这段函数的URL值就是我们的目标网页,也就是要偷的页面了。 当然我们得到的代码是以二进制返回给我们的,那我们得把他转换成我们要的字符,怎么办? 怕什么?我自己不会写难道还不会上网找啊。找到了,怎么实现的我们当然不管它了,只要能用就行了,函数代码如下: ' 二进制转字符串 function bytes2bstr(vin) strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next bytes2bstr = strreturn end function OK! 有了这两个函数基本上可以实现简单的小偷了。 我今天就找天空的软件资讯开刀,地址是: http://www.skycn.com/article/index_article.html 开工: 1,建立一个ASP文件,我建的是index.asp <% %> 先写好啊,要养成这样的习惯哦。 定义一下地址和调用函数 dim url,html url="http://www.skycn.com/article/index_article.html" Html=GetURL(url) '把地址url传递到GetURL这个函数 Html=Bytes2BStr(Html) '二进制转换成字符一下 再把刚刚两个函数写进去 最后看一下是否偷到了,我们response一下 Response.write html 整个文件内容就是: <% On Error Resume Next Server.ScriptTimeOut=9999999 dim url,html url="http://www.skycn.com/article/index_article.html" Html=GetURL(url) '把地址url传递到GetURL这个函数 Html=Bytes2BStr(Html) '二进制转换成字符一下 ' 获取远程HTML Function GetURL(url) Set Retrieval = CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "GET", url, False .Send GetURL = .responsebody if len(.responsebody)<100 then response.write "获取远程文件 <a href="&url&" target=_blank>"&url&"</a> 失败。" response.end end if End With Set Retrieval = Nothing End Function ' 二进制转字符串 function bytes2bstr(vin) strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next bytes2bstr = strreturn end function Response.write html %> 试了一下,果真取到了。
ASP采集教程_基础篇2-最基本的数据处理ASP采集教程_基础篇2-最基本的数据处理 上次说到哪了?好像只说到如何得到目标地址并得到代码和显示出来。这样得到的当然是不能用的了。我们现在 就来学一下把得到的数据做一个最基本的数据处理吧. OK!开始! 那天刚好在站长站里看到有个人想要一个杀毒软件的小偷页面,说是要丁香鱼的瑞星更新小偷(怎么不来找我呢,有时间给你写一个嘛 不过你只要看了我的教程,以后不要说丁香鱼了,其它的鱼一样偷),那我们就把丁香鱼拿来开刀。 丁香鱼网址:http://www.luckfish.net/rising.htm 记不记得我上次的代码啊,里面有几个函数,现在我把它们都放入一个文件function.asp,目的是为了以后方便改啊,添加功能什么的 我也不懂啦,个人认为就是好看,不会乱。 -------------------------------- function.asp: <% ' 获取远程HTML Function GetURL(url) Set Retrieval = CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "GET", url, False .Send GetURL = .responsebody if len(.responsebody)<100 then response.write "获取远程文件 <a href="&url&" target=_blank>"&url&"</a> 失败。" response.end end if
End With Set Retrieval = Nothing End Function ' 二进制转字符串 function bytes2bstr(vin) strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next bytes2bstr = strreturn end function
Function getcontent(HTML,starcode,endcode) dim StartPos,EndPos,Length StartPos=Instr(1,HTML,starcode) EndPos=Instr(StartPos,HTML,endcode) Length=EndPos-StartPos getcontent=Mid(HTML,StartPos,Length) End Function %>
前面两个函数我就不讲了,讲一下getcontent,这个函数的作用就是截取我们想要的代码,就叫截取吧。 解释一下里面用到的VB函数 Instr: 返回某字符串在另一字符串中第一次出现的位置(vb script没学好的要抓紧补啊同志们) 。 Mid: 从字符串中返回指定数目的字符。 这样大家就比较好理解了吧,html是我们得到的网页整个源码,starcode是我们要截取的代码开始,endcode自然就是我们要截取的结束了 我们先通过starcode和endcode来指定我们要截取的位置,再用mid取出来。上面讲的都是理论的 等下通过实际的应用我们会更好理解的。 --------------- 建一个ASP文件rising.asp作为小偷的主文件。记不记得上次得到源码的几个代码,现在可以用上了。 rising.asp:
<!-- #include file="function.asp" --> <%
On Error Resume Next Server.ScriptTimeOut=9999999 dim url,html,starcode,endcode url="http://www.luckfish.net/rising.htm" '我们要偷的页面地址 Html=GetURL(url) '把地址url传递到GetURL这个函数 Html=Bytes2BStr(HTML) '二进制转换成字符一下 starcode="<td><div align=""center""></div></td>" '我们并不是偷网页的全部,因为前面的东西我们不要嘛,所以从这里开始,代码不能重复哦 endcode="<td colspan=""2""><div align=""center"">"'和上面一样,我们尾部也不要,这里是结束的部分,代码要唯一,我们要的就是上面和这里的中间部分 content=getcontent(HTML,starcode,endcode) '赋值完毕了我们就调用一下这个函数,等于是参数传递一下 content=replace(content,"images/","http://www.luckfish.net/images/")'这里是另外一个替换操作,下面给你们讲 Response.write content '输出内容 %> 主要说一下 replace: 返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。 这个就是把代码中我们不想要的换成我们想要的,或直接换成空,下面是一个例子 Dim MyString
MyString = Replace("XXpXXPXXp", "p", "Y") '二进制比较从字符串左端开始。返回 "XXYXXPXXY"。 上面XXpXXPXXp的p就被换成了Y吧,如果换成空: MyString = Replace("XXpXXPXXp", "p", "") '二进制比较从字符串左端开始。返回 "XXXXPXX"。 那上面XXpXXPXXp的p就不见了。简单吧。 我们例子里因为有图片,路径如果不处理一下,图片就无法正常显示,所以我们把"images/"换成了"http://www.luckfish.net/images/"绝对路径 还有哦,他们里面有一个引用javescript,我们在rising.asp的最前面也引用一下,是关于版本的 <script language=javascript src="http://www.rising.com.cn/service/javascript/RsProVer.js"></script> OK!我看一下效果哦。
官方 演示(为了配合样式,我加了页头和页尾了) http://www.crxb.com/rising.asp
|