快速业务通道

用flash实现基于搜索引擎的搜索 - 本地直接从百度获取LRC歌词

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-08
是说,你写的这段程序在很长的一段时间内都是有用的)。


也就是源代码中的"<a href= " 和"</a>"标签。在这里我们用了"<a"作为特征字符串并只取在这之前的数据。我们将从后面剥离最后一个超链接以使结果从后面开始第一个超链接就是我们想要的数据。
linkData[i].lastIndexOf("<a") 找到最后一个 "<a"出现的位置,也就是在这个地方: ......补充材料 - </font><nobr><a class=fl href="http://72.14.203.104/ .....
linkData[i] = linkData[i].slice(0, linkData[i].lastIndexOf("<a")) 取它之前的数据。也就是这一段: </a> - <a class=fl href="/search?hl=......6k - 补充材料 - </font><nobr>
(补充一句,考到锚点和结果文字多少的情况,事实上用"</a"作为特征字符串处理可能更好一些,这样这一次处理的结果就剩下这段代码了):
*********************************
</a> -
<a class=fl href="/search?hl=zh-CN&lr=lang_zh-CN&newwindow=1&q=related:www.design-war.com/manage/download_counter.asp%3Fid%3D2262">类似网页</a></nobr>
<p class=g>
<a class=l href="http://www.rixiu.com/fei5/11/1140657ae45bc98.html" target=_blank onmousedown="return clk(0,''res'',''2'','''')">郑源/披着羊皮的狼.LRC 飞舞歌词fei5.com</a>
*********************************

对比一下上面用"类似网页"截断的数据,要处理到这一步,就需要重复处理两次。(因为 "<a" 的超链接在从后向前查找的过程中,有出现两次,这就是为什么要选择 "网页快照" 作为我们截断重复区块的原因)

第二句 linkData[i] = linkData[i].slice(linkData[i].lastIndexOf("href=")+6) 从后面查找 "href="(现在最后的一个超链接区域就是我们想要的链接了,这就是为什么我们用lastIndexOf从后面搜索)。不过稍微不同的是,现在取在"href="之后的字符串(上一步是之前)。经过这次处理剩下的代码如下:
*********************************
www.rixiu.com/fei5/11/1140657ae45bc98.html"; target=_blank onmousedown="return clk(0,''res'',''2'','''')">郑源/披着羊皮的狼.LRC 飞舞歌词fei5.com</a>
*********************************

第三句 linkData[i] = linkData[i].slice(0, linkData[i].indexOf("\"")) 取得第一个引号以前的字符串。这里我讲一下为什么不用 target= 或者.html 作为特征处理的原因,上面的代码实际上也可以将 target= 放在后面,也不会影响最终页面的结果。像这样:
www.rixiu.com/fei5/11/1140657ae45bc98.html"; onmousedown="return clk(0,''res'',''2'','''')" target=_blank>郑源/披着羊皮的狼.LRC
飞舞歌词fei5.com</a>
所以,它是不可识别和预知的。而.html 则并不是因为所有网页都是以.html作为结尾的,有些可能是.htm ,有些更可能是像?sl=11&word=aa这样动态生成的格式。(其实" 也并不是非常稳健的方式,因为有些不标准的网页可能将引号" 去除,这时候替代的方法是使用空格)
*********************************
www.rixiu.com/fei5/11/1140657ae45bc98.html
*********************************

现在最终我们得到了这个超链接。

通过上面的for (var i = 0; i<linkData.length; i++) { 循环,我们得到了这个页面的所有通过最终页面的链接(在百度中是10个)并将它们放入一个数组中。

现在我们已经得到了搜索结果页面的每个通向最终页面的链接(Google 和百度都如此,教程中对两者的特征字作了兼容),在百度中,一般而言,只要打开第一个链接就可以了。准确性差不多高过95%。

openLRCPage(linkData

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号