下面轉(zhuǎn)到 getLink 函數(shù): function getLink(src) { nextPageLink = "http://www.baidu.com/"+src.slice(src.lastIndexOf("href=", src.indexOf("下一頁(yè)"))+5, src.lastIndexOf("><", src.indexOf("下一頁(yè)"))); linkData = src.split("快照"); for (var i = 0; i<linkData.length; i++) { linkData[i] = linkData[i].slice(0, linkData[i].lastIndexOf("<a")); linkData[i] = linkData[i].slice(linkData[i].lastIndexOf("href=")+6); linkData[i] = linkData[i].slice(0, linkData[i].indexOf("\"")); } linkIndex = 1; openLRCPage(linkData[0]); } 這是用來(lái)解析網(wǎng)頁(yè)源文件的代碼,我們用它來(lái)分析得到的搜索結(jié)果。 第一句 nextPageLink = "http://www.baidu.com/"+src.slice(src.lastIndexOf("href=", src.indexOf("下一頁(yè)"))+5, src.lastIndexOf("><", src.indexOf("下一頁(yè)"))) 就不說(shuō)了,它用來(lái)獲得下一頁(yè)的鏈接。
linkData = src.split("快照") 它將網(wǎng)頁(yè)的源代碼以"快照"作為參照拆為不同的段,然后放到數(shù)組中。 事實(shí)上,linkData=new Array(); linkData = src.split("快照") 這樣寫(xiě)更標(biāo)準(zhǔn)一些。
選取一個(gè)好的拆分關(guān)鍵字非常重要,它可以讓你的運(yùn)算量成倍降低(特別是要處理的數(shù)據(jù)量更大的時(shí)候,就更明顯),在這里,我們使有"快照"這兩個(gè)字,看看百度返回的結(jié)果: ----------------------------------------------------- 伍佰-突然的自我 [ti:突然的自我] [al:伍佰&china blue 200 ] [offset:0] [00:05.00] 突然的自我 [00:12.87] [00:31.74]聽(tīng)見(jiàn)你說(shuō)朝陽(yáng)起又落 [00:37.62]晴雨難測(cè)道路是腳步多 [00:43.49]我已習(xí)慣你突然間的自我 [00:49.37]揮揮灑灑將自然看... www.musictea.com/music/lrc86407.htm?t=突 ... 4K 2005-12-24 - 百度快照 www.musictea.com 上的更多結(jié)果
水晶手機(jī)信息技術(shù)網(wǎng)--wav鈴聲 黃小琥 - 突然的.. [ti:突然的自我] [ar:黃小琥] [al:] [by:wolfpey] [offset:500] [00:02.67]《突然的自我》 [00:10.12...[ti:突然的自我] [ar:黃小琥] [al:] [by:wolfpey] [offset:500] [00:02.67]《突然的自我》 [00:10.12... www.zjnetcafe.com/html/7/60586.htm 5K 2005-10-14 - 百度快照 ----------------------------------------------------- 這里只顯示了兩段文本,它有十個(gè)這樣的文本塊。分析一下,盡管每塊文本的標(biāo)題和內(nèi)容都不同,但是每一段都會(huì)出現(xiàn) "百度快照 " 這樣的內(nèi)容。在 Google 中則是這個(gè): "網(wǎng)頁(yè)快照 - 類(lèi)似網(wǎng)頁(yè)"
在百度中,你可以選擇"百度快照"作為拆分的參照(如果查看源代碼,也可以找到更多的參照),在 Google 中,"網(wǎng)頁(yè)快照" 和 "類(lèi)似網(wǎng)頁(yè)" 都可以使用 ,在這里,我們以 Google 為實(shí)例,說(shuō)明如何選取好的關(guān)鍵字的一個(gè)例子:(在百度中,這只是一個(gè)巧合,就不作為教程的參考了)
在 Google 搜索框中輸入"[ti:披著羊皮的狼",然后查看一下網(wǎng)頁(yè)的源代碼(菜單:查看> 源文件 或者用右鍵彈出菜單)。它們和你在 flash 中獲得的數(shù)據(jù)是一樣的。找到每個(gè)重復(fù)類(lèi)似的文本塊的那一段源代碼:(我們?nèi)〉诙危?/P>
********************************* <p class=g> <a class=l target=_blank onmousedown="return clk(0,'res','2','')">鄭源/披著羊皮的狼.LRC 飛舞歌詞fei5.com</a><br> <font size=-1>鄭源/披著羊皮的狼.LRC. <b>...</b> [ti:披著羊皮的狼] [ar:鄭源] [al:我最<br>火] [by:fei5.com] [offset:-500] [00:01.00]-披著羊皮的狼- [00:04.00]歌手:鄭<br>源[00:08.00]專(zhuān)輯:我最火[00:12.00]詞曲:刀郎[00:16.00] <b>...</b><br> <font color=#008000> <span dir=ltr>www.rixiu.com/fei5/11/1140657ae45bc98.html</span> - 6k - 補(bǔ)充材料 - </font> <nobr><a class=fl target=_blank>網(wǎng)頁(yè)快照</a> - <a class=fl href="/search?hl=zh-CN&lr=&newwindow=1&q=related: www.rixiu.com/fei5/11/1140657ae45bc98.html">類(lèi)似網(wǎng)頁(yè)</a></nobr> </font> ********************************* 看看"網(wǎng)頁(yè)快照" 和 "類(lèi)似網(wǎng)頁(yè)" 的位置, "類(lèi)似網(wǎng)頁(yè)"差不多是在結(jié)尾了,直覺(jué)上,用 "類(lèi)似網(wǎng)頁(yè)" 分割將更不會(huì)產(chǎn)生混淆,更完整(因?yàn)槿绻?"網(wǎng)頁(yè)快照" 分割出來(lái)的數(shù)據(jù),屬于這一段在"網(wǎng)頁(yè)快照" 的一部份數(shù)據(jù)將會(huì)分割到下一段中,一個(gè)分割段中包含了兩塊文本的數(shù)據(jù)而造成混亂)
看看我們要取得什么,最終我們要得到的是指向最終頁(yè)面的超鏈接。也就是這一段 " <a class=l target=_blank onmousedown="return clk(0,'res','2','')">鄭源/披著羊皮的狼.LRC 飛舞歌詞fei5.com</a><br>" 事實(shí)上,我們只要取得這個(gè)超鏈接就可以了: www.rixiu.com/fei5/11/1140657ae45bc98.html
最終我們將用String的slice方法取得這個(gè)字符串,但在取之前我們必須找到字符串開(kāi)始的位置"http://" 和最后結(jié)束的位置 "bc98.html" ,這就要用到String.indexOf()或String.lastIndexOf()方法。在這里,我們使用逆向查找的方法。也就是String.lastIndexOf()。它是從后向前搜索,如果找到,它將返回靠后的那個(gè)字符串的位置。參數(shù)將指定要搜索的字符串,它還有一個(gè)搜索起始位置的參數(shù)(在比較高級(jí)查找的時(shí)候有用),在這里我們只用第一個(gè)字符串參數(shù),詳細(xì)請(qǐng)看看官方幫助文檔中的說(shuō)明:
my_str.lastIndexOf(substring, [startIndex]) 參數(shù): substring 一個(gè)整數(shù)或字符串,指定要搜索的字符串。 startIndex 一個(gè)可選整數(shù),指定搜索 substring 的起始點(diǎn)。 返回: 指定子字符串的最后一個(gè)匹配項(xiàng)的位置,或 -1。 說(shuō)明: 方法;在字符串中從右向左搜索,并返回調(diào)用此方法的字符串中在 startIndex 之前找到的 substring 的最后一個(gè)匹配項(xiàng)的索引。如果沒(méi)有找到 substring,則此方法返回 -1。
for (var i = 0; i<linkData.length; i++) { ...... } 對(duì)每個(gè)區(qū)塊執(zhí)行同樣的操作,F(xiàn)在我們只看看其中一塊的處理。
出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色月光
上一頁(yè) 本地直接從百度獲取LRC歌詞 一 下一頁(yè) 本地直接從百度獲取LRC歌詞 三
◎進(jìn)入論壇Flash專(zhuān)欄版塊參加討論
|