首页 > Asp.net开发 > Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容 – yimiyangguang的专栏 – 博客频道 – CSDN.NET

Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容 – yimiyangguang的专栏 – 博客频道 – CSDN.NET

Asp 使用 Microsoft.XMLHTTP 抓取网页内容,并过滤需要的内容

Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容

示例源码:

[vb]

  1. <%  
  2.  Dim xmlUrl,http,strHTML,strBody  
  3.  xmlUrl = Request.QueryString("u")  
  4.   
  5.  REM 异步读取XML源  
  6.  Set http = server.CreateObject("Microsoft.XMLHTTP")   
  7.  http.Open "POST",xmlUrl,false  
  8.  http.setrequestheader "User-Agent""Mozilla/4.0"  
  9.  http.setrequestheader "Connection""Keep-Alive"  
  10.  http.setRequestHeader "Content-Type""application/x-www-form-urlencoded"  
  11.  http.Send()  
  12.   
  13.  strHTML = BytesToBstr(http.ResponseBody)  
  14.  set http = nothing  
  15.   
  16.  REM 抓取主要内容  
  17.  strBody = GetBody(strHTML,"<div id=""Div_newsContentc"" class=""cnt"">","</div>",0,0)  
  18.  strBody =Replace(strBody,"(本文首发于","")  
  19.  strBody =Replace(strBody,"财富动力网</a>,转载请注明出处。)","")  
  20.  strBody =Replace(strBody,"本文首发于,转载请注明出处。)","")  
  21.  strBody =Replace(strBody,"财富动力网</a>:http://www.927953.com","")  
  22.  strBody =Replace(strBody,"本文首发于","")   
  23.     
  24.  Response.Write RegRemoveHref(strBody)  
  25.   
  26. REM 获取对应网址响应的HTML  
  27. Function BytesToBstr(body)  
  28.     dim objstream  
  29.     set objstream = Server.CreateObject("adodb.stream")  
  30.     objstream.Type = 1  
  31.     objstream.Mode =3  
  32.     objstream.Open  
  33.     objstream.Write body  
  34.     objstream.Position = 0  
  35.     objstream.Type = 2  
  36.     objstream.Charset = "UTF-8"  
  37.   
  38.     '转换原来默认的UTF-8编码转换成GB2312编码,否则直接用  
  39.     'XMLHTTP调用有中文字符的网页得到的将是乱码  
  40.     BytesToBstr = objstream.ReadText  
  41.     objstream.Close  
  42.     set objstream = nothing  
  43. End Function  
  44.   
  45.   
  46. REM 使用正则表达式,抓取之内标记的内容  
  47. Function GetBody(ConStr,StartStr,OverStr,IncluL,IncluR)  
  48.    If ConStr="$False$" or ConStr="" or IsNull(ConStr)=True Or StartStr="" or IsNull(StartStr)=True Or OverStr="" or IsNull(OverStr)=True Then  
  49.       GetBody="$False$"  
  50.       Exit Function  
  51.    End If  
  52.    Dim ConStrTemp  
  53.    Dim Start,Over  
  54.    ConStrTemp=Lcase(ConStr)  
  55.    StartStr=Lcase(StartStr)  
  56.    OverStr=Lcase(OverStr)  
  57.    Start = InStrB(1, ConStrTemp, StartStr, vbBinaryCompare)  
  58.    If Start<=0 then  
  59.       GetBody="$False$"  
  60.       Exit Function  
  61.    Else  
  62.       If IncluL=False Then  
  63.          Start=Start+LenB(StartStr)  
  64.       End If  
  65.    End If  
  66.    Over=InStrB(Start,ConStrTemp,OverStr,vbBinaryCompare)  
  67.    If Over<=0 Or Over<=Start then  
  68.       GetBody="$False$"  
  69.       Exit Function  
  70.    Else  
  71.       If IncluR=True Then  
  72.          Over=Over+LenB(OverStr)  
  73.       End If  
  74.    End If  
  75.    GetBody=MidB(ConStr,Start,Over-Start)  
  76. End Function  
  77.   
  78. REM 过滤a超链接  
  79. Function RegRemoveHref(HTMLstr)   
  80.     Set ra = New RegExp   
  81.     ra.IgnoreCase = True   
  82.     ra.Global = True   
  83.     ra.Pattern = "<a[^>]+>(.+?)<\/a>"  
  84.        
  85.     RegRemoveHref = Replace(ra.replace(HTMLstr,"$1"),"href=""http://www.927953.com""","")   
  86. END Function  
  87. %>  


效果图如下:


本文固定链接: http://www.devba.com/index.php/archives/5562.html | 开发吧

报歉!评论已关闭.