ASP采集基础教程(二)

网络整理 - 09-04
我们现在就来学一下把得到的数据做一个最基本的数据处理吧.
   
  那天刚好在站长站里看到有个人想要一个杀毒软件的小偷页面,说是要丁香鱼的瑞星更新小偷(怎么不来找我呢,有时间给你写一个嘛不过你只要看了我的教程,以后不要说丁香鱼了,其它的鱼一样偷),那我们就把丁香鱼拿来开刀。

  丁香鱼网址:,记不记得我上次的代码啊,里面有几个函数,现在我把它们都放入一个文件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:返回某字符串在另一字符串中第一次出现的位置(vbscript没学好的要抓紧补啊同志们)。
  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="" '我们要偷的页面地址
    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/","")'这里是另外一个替换操作,下面给你们讲
Response.write content '输出内容%>



  主要说一下replace:返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。这个就是把代码中我们不想要的换成我们想要的,或直接换成空,下面是一个例子:

<%Dim MyString
MyString = Replace("XXpXXPXXp", "p", "Y") '二进制比较从字符串左端开始,返回 "XXYXXPXXY"。%>



  上面XXpXXPXXp的p就被换成了Y吧,如果换成空:

<%MyString = Replace("XXpXXPXXp", "p", "") '二进制比较从字符串左端开始,返回 "XXXXPXX"。%>



  那上面XXpXXPXXp的p就不见了。简单吧。

  我们例子里因为有图片,路径如果不处理一下,图片就无法正常显示,所以我们把“images/”换成了“”绝对路径,还有哦,他们里面有一个引用javescript,我们在rising.asp的最前面也引用一下,是关于版本的“<script language=javascript src=""></script>”。

  大功告成!