2022年asp实现关键词获取(各搜索引擎,gb2312及utf-8)源码精华教程.docx

上传人:l*** 文档编号:62181374 上传时间:2022-11-22 格式:DOCX 页数:12 大小:14.79KB
返回 下载 相关 举报
2022年asp实现关键词获取(各搜索引擎,gb2312及utf-8)源码精华教程.docx_第1页
第1页 / 共12页
2022年asp实现关键词获取(各搜索引擎,gb2312及utf-8)源码精华教程.docx_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《2022年asp实现关键词获取(各搜索引擎,gb2312及utf-8)源码精华教程.docx》由会员分享,可在线阅读,更多相关《2022年asp实现关键词获取(各搜索引擎,gb2312及utf-8)源码精华教程.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022年asp实现关键词获取(各搜索引擎,gb2312及utf-8)源码精华教程不知道为什么现在各大搜寻引擎编码尽然不一样.当然不是gb2312就是utf-8了.编码问题是比较头疼的问题.头疼的不要命.我们获得关键词,一般是通过来访页面的url进行分析的.比如各位确定知道这个是通过urlencode编码的.我们得到其中的信息,须要进行2步.第一步是进行urldecode,在我们一般参数活得的时候,这个是由asp自己来进行的,但是现在我们不得不进行手工解码.网上函数许多,但都是针对于gb2312页面解gb2312.utf-8的.对于这个,我们可以很轻松的先进行解码,然后依据搜寻引擎推断它的编码

2、,假如是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

3、 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 Le

4、n(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

5、(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

6、,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 = strRet

7、urn End Functionfunction getkey(key)dim oReqset oReq = CreateObject(MSXML2.XMLHTTP)oReq.open POST,http:/WebUrl/system/ShowGb2312XML.asp?a=key,falsehttp:/WebUrl/system/ShowGb2312XML.asp?a=key,falseoReq.sendgetkey=UTF2GB(oReq.responseText)end functionfunction chinese2unicode(Str) dim i dim Str_one dim

8、 Str_unicode for i=1 to len(Str) Str_one=Mid(Str,i,1) Str_unicode=Str_unicodechr(38) Str_unicode=Str_unicodechr(35) Str_unicode=Str_unicodechr(120) Str_unicode=Str_unicode Hex(ascw(Str_one) Str_unicode=Str_unicodechr(59) next Response.Write Str_unicode end function function UTF2GB(UTFStr)Dim dig,GBS

9、TR for Dig=1 to len(UTFStr) if mid(UTFStr,Dig,1)=% then if len(UTFStr) >= Dig+8 then GBStr=GBStr ConvChinese(mid(UTFStr,Dig,9)Dig=Dig+8 else GBStr=GBStr mid(UTFStr,Dig,1) end if else GBStr=GBStr mid(UTFStr,Dig,1) end if next UTF2GB=GBStr end functionfunction ConvChinese(x)dim a,i,j,DigS,Unicode A

10、=split(mid(x,2),%) i=0 j=0 for i=0 to ubound(A) A(i)=c16to2(A(i) next for i=0 to ubound(A)-1 DigS=instr(A(i),0)Unicode=for j=1 to DigS-1 if j=1 then A(i)=right(A(i),len(A(i)-DigS)Unicode=Unicode A(i) else i=i+1A(i)=right(A(i),len(A(i)-2)Unicode=Unicode A(i) end if next if len(c2to16(Unicode)=4 then

11、ConvChinese=ConvChinese chrw(int(H c2to16(Unicode) else ConvChinese=ConvChinese chr(int(H c2to16(Unicode) end if next end functionfunction U8Decode(enStr) '输入一堆有%分隔的字符串,先分成数组,依据utf8规则来推断补齐规则 '输入:关 E5 85 B3 键 E9 94 AE 字 E5 AD 97 '输出:关 B9D8 键 BCFC 字 D7D6 dim c,i,i2,v,deStr,WeiS for i=1 to

12、len(enStr) c=Mid(enStr,i,1) if c=% then v=c16to2(Mid(enStr,i+1,2) '推断第一次出现0的位置, '可能是1(单字节),3(3-1字节),4,5,6,7不行能是2和大于7 '理论上到7,实际不会超过3。 WeiS=instr(v,0) v=right(v,len(v)-WeiS)'第一个去掉最左边的WeiS个 i=i+3 for i2=2 to WeiS-1 c=c16to2(Mid(enStr,i+1,2)c=right(c,len(c)-2)'其余去掉最左边的两个v=v ci=i+3 ne

13、xt if len(c2to16(v) =4 then deStr=deStr chrw(c2to10(v) else deStr=deStr chr(c2to10(v) end if i=i-1 else if c=+ then deStr=deStr else deStr=deStrc end if end if next U8Decode = deStr end functionfunction c16to2(x) '这个函数是用来转换16进制到2进制的,可以是任何长度的,一般转换UTF-8的时候是两个长度,比如A9 '比如:输入“C2”,转化成“11000010”,其中

14、1100是c是10进制的12(1100),那么2(10)不足4位要补齐成(0010)。 dim tempstr dim i:i=0'临时的指针 for i=1 to len(trim(x) tempstr= c10to2(cint(int(h mid(x,i,1) do while len(tempstr)<4 tempstr=0 tempstr'假如不足4位那么补齐4位数 loop c16to2=c16to2 tempstr next end functionfunction c2to16(x) '2进制到16进制的转换,每4个0或1转换成一个16进制字母,输入

15、长度当然不行能不是4的倍数了 dim i:i=1'临时的指针 for i=1 to len(x) step 4 c2to16=c2to16 hex(c2to10(mid(x,i,4) next end functionfunction c2to10(x) '单纯的2进制到10进制的转换,不考虑转16进制所须要的4位前零补齐。 '因为这个函数很有用!以后也会用到,做过通讯和硬件的人应当知道。 '这里用字符串代表二进制 c2to10=0 if x=0 then exit function'假如是0的话干脆得0就完事 dim i:i=0'临时的指针 for i= 0 to len(x) -1'否则利用8421码计算,这个从我最起先学计算机的时候就会,好怀念当时教我们的谢道建老先生啊! if mid(x,len(x)-i,1)=1 then c2to10=c2to10+2(i) next end functionfunction c10to2(x)'10进制到2进制的转换b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁