[转]ASP实现关键词获取(各搜索引擎,GB2312及UTF-8)

论坛 期权论坛     
niminba   2021-5-22 15:04   23   0
不知道为什么现在各大搜索引擎编码居然不一样.当然不是GB2312就是UTF-8了.编码问题是比较头疼的问题...头疼的不要命...
<br>我们获得关键词,一般是通过来访页面的url进行分析的.比如
<br>http://www.google.com/search?hl=zh-CN&amp;q=%E5%AD%A4%E7%8B%AC&amp;lr=
<br>各位肯定知道这个是通过urlencode编码的.
<br>我们得到其中的信息,需要进行2步.第一步是进行urldecode,在我们普通参数活得的时候,这个是由ASP自己来进行的,但是现在我们不得不进行手工解码.
<br>网上函数很多,但都是针对于GB2312页面解GB2312.UTF-8的.对于这个,我们可以很轻松的先进行解码,然后根据搜索引擎判断它的编码,如果是UTF-8就再转换为GB2312.
<br>但是由于我的网站是UTF-8页面的.而UTF-8页面我找到的只有解UTF-8字符的urldecode编码的.在这里停顿了很久,最后我只能用最糟糕的方法,把拆分出来的关键词用xmlhttp提交到一个GB2312的ASP页面,然后活得乱码(GB2312)后再进行GB2312&nbsp;to&nbsp;UTF-8的转换.
<br>下面主要实现代码.
<br>Public&nbsp;Function&nbsp;GetSearchKeyword(RefererUrl)&nbsp;’搜索关键词
<br>&nbsp;if&nbsp;RefererUrl=&quot;&quot;&nbsp;or&nbsp;len(RefererUrl)&lt;1&nbsp;then&nbsp;exit&nbsp;function
<br><br>&nbsp;&nbsp;on&nbsp;error&nbsp;resume&nbsp;next
<br><br>&nbsp;&nbsp;Dim&nbsp;re
<br>&nbsp;&nbsp;Set&nbsp;re&nbsp;=&nbsp;New&nbsp;RegExp
<br>&nbsp;&nbsp;re.IgnoreCase&nbsp;=&nbsp;True
<br>&nbsp;&nbsp;re.Global&nbsp;=&nbsp;True
<br>&nbsp;&nbsp;Dim&nbsp;a,b,j
<br>&nbsp;&nbsp;’模糊查找关键词,此方法速度较快,范围也较大
<br>&nbsp;&nbsp;re.Pattern&nbsp;=&nbsp;&quot;(word=([^&amp;]*)|q=([^&amp;]*)|p=([^&amp;]*)|query=([^&amp;]*)|name=([^&amp;]*)|_searchkey=([^&amp;]*)|baidu.*?w=([^&amp;]*))&quot;
<br>&nbsp;&nbsp;Set&nbsp;a&nbsp;=&nbsp;re.Execute(RefererUrl)
<br>&nbsp;&nbsp;If&nbsp;a.Count&gt;0&nbsp;then
<br>&nbsp;&nbsp;&nbsp;Set&nbsp;b&nbsp;=&nbsp;a(a.Count-1).SubMatches
<br>&nbsp;&nbsp;&nbsp;For&nbsp;j=1&nbsp;to&nbsp;b.Count
<br>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Len(b(j))&gt;0&nbsp;then&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;instr(1,RefererUrl,&quot;google&quot;,1)&nbsp;then&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSearchKeyword=Trim(U8Decode(b(j)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;instr(1,refererurl,&quot;yahoo&quot;,1)&nbsp;then&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSearchKeyword=Trim(U8Decode(b(j)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;instr(1,refererurl,&quot;yisou&quot;,1)&nbsp;then
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSearchKeyword=Trim(getkey(b(j)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;instr(1,refererurl,&quot;3721&quot;,1)&nbsp;then
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSearchKeyword=Trim(getkey(b(j)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSearchKeyword=Trim(getkey(b(j)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function
<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if
<br>&nbsp;&nbsp;&nbsp;Next
<br>&nbsp;&nbsp;End&nbsp;If
<br>&nbsp;&nbsp;if&nbsp;err&nbsp;then
<br>&nbsp;&nbsp;err.clear
<br>&nbsp;&nbsp;GetSearchKeyword&nbsp;=&nbsp;RefererUrl
<br>&nbsp;&nbsp;else
<br>&nbsp;&nbsp;GetSearchKeyword&nbsp;=&nbsp;&quot;&quot;&nbsp;&nbsp;
<br>&nbsp;&nbsp;end&nbsp;if&nbsp;&nbsp;
<br>&nbsp;End&nbsp;Function
<br><br>&nbsp;Function&nbsp;URLEncoding(vstrIn)
<br>&nbsp;&nbsp;dim&nbsp;strReturn,i,thischr
<br>&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;&quot;&quot;
<br>&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;i&nbsp;=&nbsp;1&nbsp;To&nbsp;Len(vstrIn)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThisChr&nbsp;=&nbsp;Mid(vStrIn,i,1)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Abs(Asc(ThisChr))&nbsp;&lt;&nbsp;&amp;HFF&nbsp;Then
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;strReturn&nbsp;&amp;&nbsp;ThisChr
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerCode&nbsp;=&nbsp;Asc(ThisChr)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;innerCode&nbsp;&lt;&nbsp;0&nbsp;Then
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerCode&nbsp;=&nbsp;innerCode&nbsp;+&nbsp;&amp;H10000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hight8&nbsp;=&nbsp;(innerCode&nbsp;&nbsp;And&nbsp;&amp;HFF00)\&nbsp;&amp;HFF
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Low8&nbsp;=&nbsp;innerCode&nbsp;And&nbsp;&amp;HFF
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;strReturn&nbsp;&amp;&nbsp;&quot;%&quot;&nbsp;&amp;&nbsp;Hex(Hight8)&nbsp;&amp;&nbsp;&nbsp;&quot;%&quot;&nbsp;&amp;&nbsp;Hex(Low8)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If
<br>&nbsp;&nbsp;&nbsp;&nbsp;Next
<br>&nbsp;&nbsp;&nbsp;&nbsp;URLEncoding&nbsp;=&nbsp;strReturn
<br>End&nbsp;Function
<br>function&nbsp;getkey(key)
<br>dim&nbsp;oreq
<br>set&nbsp;oreq&nbsp;=&nbsp;CreateObject(&quot;MSXML2.XMLHTTP&quot;)
<br>oReq.open&nbsp;&quot;POST&quot;,&quot;http://&qu
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP