Function FairFromGoogle(num,Key)
Dim strReturn,objRegExp,strUrl,Re,Matches,Match,Count,MaxCount
strReturn=""
Count=0
If num="" or not isNumeric(num) Then MaxCount=6 Else MaxCount=num
strUrl="http://www.google.com/search?hl=zh-CN&q="+Key
Re="<p class=g><a(.*?)href=""(.*?)""(.*?)>(.*?)</a>"
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = Re
strReturn=Trim(GetBody(strUrl))
Set Matches = objRegExp.Execute(strReturn)
strReturn = ""
Re="(.*?)(<a)(.*?)(href="")(.*?)("")(.*?)(>)(.*?)(</a>)"
objRegExp.Pattern = Re
For Each Match in Matches
Re=""
If Count>=MaxCount Then Exit For
strReturn = strReturn &"<li><a href="""&objRegExp.Replace(Match,"$5")&""" target=_blank title="""&NoHtml(objRegExp.Replace(Match,"$9"))&""">"&CutStr(NoHtml(objRegExp.Replace(Match,"$9")),26)&"</a></li>"
Count=Count+1
Next
FairFromGoogle=strReturn
End Function
上面用到的相关函数:
Function BytesToBstr(strBody, CodeBase)
Set objStream = Server.CreateObject("Adodb.Stream")
With objStream
.Type = 1
.Mode = 3
.Open
.Write strBody
.Position = 0
.Type = 2
.Charset = CodeBase
BytesToBstr = .ReadText
.Close
End With
Set objStream = Nothing
End Function
Function GetBody(Url)
On Error Resume Next
Set objXML = Server.CreateObject("Microsoft.XMLHTTP")
With objXML
.Open "Get", Url, False, "", ""
.Send
GetBody = .ResponseBody
End With
If Err Then GetBody=""
GetBody = BytesToBstr(GetBody, "UTF-8") 'GB2312
Set objXML = Nothing
End Function
Function CutStr(str,strlen)
Dim l,t,c,i
l=len(str)
t=0
If str="" Or IsNull(str) Then str="" : Exit Function
For i=1 To l
c=Abs(Asc(Mid(str,i,1)))
If c>255 Then
t=t+2
Else
t=t+1
End If
If t>=strlen Then
cutStr=left(str,i)
Exit for
Else
cutStr=str
End If
Next
CutStr=replace(cutStr,chr(10),"")
End Function
'*******************************************************
'Function: NoHtml(str)
'Description: 去掉HTML代码
'Parameter: str 字符串
'Return: 返回字符串
'Author: Written by net205,Modifide by net205
'Date: 2004/9/16----?
'********************************************************
Function NoHtml(str)
If str="" Or IsNull(str) Then NoHtml="" : Exit Function
dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True
re.Pattern="(\<.*?\>)"
str=re.replace(str,"")
re.Pattern="(\<\/.*?\>)"
str=re.replace(str,"")
NoHtml=str
End Function