当前位置: 首页 > 图文教程 > 网络编程 > ASP > asp实现关键词获取(各搜索引擎,gb2312及utf-8)

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

ASP 中的 asp实现关键词获取(各搜索引擎,gb2312及utf-8)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 116 ::
收藏到网摘: n/a

 

不知道为什么现在各大搜索引擎编码居然不一样.当然不是gb2312就是utf-8了.编码问题是比较头疼的问题...头疼的不要命...

我们获得关键词,一般是通过来访页面的url进行分析的.比如

http://www.google.com/search?hl=zh-CN&q=%E5%AD%A4%E7%8B%AC&lr=

各位肯定知道这个是通过urlencode编码的.

我们得到其中的信息,需要进行2步.第一步是进行urldecode,在我们普通参数活得的时候,这个是由asp自己来进行的,但是现在我们不得不进行手工解码.

网上函数很多,但都是针对于gb2312页面解gb2312.utf-8的.对于这个,我们可以很轻松的先进行解码,然后根据搜索引擎判断它的编码,如果是utf-8就再转换为gb2312.

但是由于我的网站是utf-8页面的.而utf-8页面我找到的只有解utf-8字符的urldecode编码的.在这里停顿了很久,最后我只能用最糟糕的方法,把拆分出来的关键词用xmlhttp提交到一个gb2312的asp页面,然后活得乱码(gb2312)后再进行gb2312 to utf-8的转换.

下面主要实现代码.

Public Function GetSearchKeyword(RefererUrl) '搜索关键词
 if RefererUrl="" or len(RefererUrl)<1 then exit function
   
  on error resume next
 
  Dim re
  Set re = New RegExp
  re.IgnoreCase = True
  re.Global = True
  Dim a,b,j
  '模糊查找关键词,此方法速度较快,范围也较大
  re.Pattern = "(word=([^&]*)|q=([^&]*)|p=([^&]*)|query=([^&]*)|name=([^&]*)|_searchkey=([^&]*)|baidu.*?w=([^&]*))"
  Set a = re.Execute(RefererUrl)
  If a.Count>0 then
   Set b = a(a.Count-1).SubMatches
   For j=1 to b.Count
    If Len(b(j))>0 then
     if instr(1,RefererUrl,"google",1) then
       GetSearchKeyword=Trim(U8Decode(b(j)))
      elseif instr(1,refererurl,"yahoo",1) then
       GetSearchKeyword=Trim(U8Decode(b(j)))
      elseif instr(1,refererurl,"yisou",1) then
       GetSearchKeyword=Trim(getkey(b(j)))
      elseif instr(1,refererurl,"3721",1) then
       GetSearchKeyword=Trim(getkey(b(j)))
      else
       GetSearchKeyword=Trim(getkey(b(j)))
     end if
     Exit Function
    end if
   Next
  End If
  if err then
  err.clear
  GetSearchKeyword = RefererUrl
  else
  GetSearchKeyword = "" 
  end if 
 End Function


 Function URLEncoding(vstrIn)
  dim strReturn,i,thischr
    strReturn = ""
    For i = 1 To Len(vstrIn)
        ThisChr = Mid(vStrIn,i,1)
        If Abs(Asc(ThisChr)) < &HFF Then
            strReturn = strReturn & ThisChr
        Else
            innerCode = Asc(ThisChr)
            If innerCode < 0 Then
                innerCode = innerCode + &H10000
            End If
            Hight8 = (innerCode  And &HFF00)\ &HFF
            Low8 = innerCode And &HFF
            strReturn = strReturn & "%" & Hex(Hight8) &  "%" & Hex(Low8)
        End If
    Next
    URLEncoding = strReturn
End Function
function getkey(key)
dim oReq
set oReq = CreateObject("MSXML2.XMLH