<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數(shù)據(jù)加載中……

    搜索引擎頁面分析中的 javascript 處理

    搜索引擎頁面分析中的 javascript 處理——在制作搜索引擎的時候、或者做頁面分析及數(shù)據(jù)提取的時候,經(jīng)常面臨頁面中存在許多javascript,而頁面內(nèi)容,相當(dāng)一部分寫入到了這些js腳本的命令中,而導(dǎo)致正常的DOM分析失敗,無法提取所需的信息。

      在制作搜索引擎的時候、或者做頁面分析及數(shù)據(jù)提取的時候,經(jīng)常面臨頁面中存在許多javascript,而頁面內(nèi)容,相當(dāng)一部分寫入到了這些js腳本的命令中,而導(dǎo)致正常的DOM分析失敗,無法提取所需的信息。當(dāng)然,如果這個頁面模板確定,針對這個頁面制作信息提取模板也不很難,每個頁面人工的分析出需要提取的信息的位置,然后制作模板。可是對于general 的網(wǎng)頁搜索的話,這就不大現(xiàn)實(shí)了。正巧前兩天和朋友討論到這個問題,有些想法。在這里,提供兩個思路,供大家參考。 1、做一個簡化的 javascript 解釋器,執(zhí)行腳本片段 做一個完整的 javascript 解釋器是比較難得,但是做一個簡化的 javascript 解釋器則很容易。我們不需要那些復(fù)雜的庫,我們只將基本的 javascript 語法實(shí)現(xiàn),并且將涉及文字輸出的函數(shù)部分實(shí)現(xiàn)就可以了。這樣做的目的并不是要真正的完整執(zhí)行這個javascript,而是將腳本中的字符串,按照其程序邏輯進(jìn)行組合,最后輸出這個腳本的完整輸出。這樣自然不全面,肯定由于很多功能沒實(shí)現(xiàn),導(dǎo)致輸出的字符串和真實(shí)的輸出不完全一樣。但是,如果不出意外,

      在制作搜索引擎的時候、或者做頁面分析及數(shù)據(jù)提取的時候,經(jīng)常面臨頁面中存在許多javascript,這些javascript 比較煩人,因?yàn)橛邢喈?dāng)部分頁面內(nèi)容寫入到了這些js腳本的命令中,而導(dǎo)致正常的DOM分析看不到這些文字,而使其中的文字?jǐn)?shù)據(jù)提取失敗。

      當(dāng)然,如果這個頁面模板確定,針對這個特定的頁面制作信息提取模板也不很難,每個頁面人工的分析出需要提取的信息的位置,然后制作模板。可是對于general的網(wǎng)頁搜索的話,這就不大現(xiàn)實(shí)了。正巧前兩天和朋友討論到這個問題,有些想法。在這里,提供兩個思路,供大家參考。

      1、做一個簡化的 javascript 解釋器,執(zhí)行腳本片段

      做一個完整的 javascript 解釋器是比較難得,但是做一個簡化的 javascript 解釋器則很容易。我們不需要那些復(fù)雜的庫,我們只將基本的 javascript 語法實(shí)現(xiàn),并且將涉及文字輸出的函數(shù)部分實(shí)現(xiàn)就可以了。

      這樣做的目的并不是要真正的完整執(zhí)行這個javascript,而是將腳本中的字符串,按照其程序邏輯進(jìn)行組合,最后輸出這個腳本的完整輸出。這樣自然不全面,肯定由于很多功能沒實(shí)現(xiàn),導(dǎo)致輸出的字符串和真實(shí)的輸出不完全一樣。但是,如果不出意外,應(yīng)該不會產(chǎn)生太多的遺漏。因?yàn)樗械淖址敵霾糠治覀兌紝?shí)現(xiàn)了,那么完全可以將這些字符串按照其將要輸出的邏輯組合在一起。

      對于根據(jù)動態(tài)條件做動態(tài)的事情的問題,如果這些條件無法確定,比如根據(jù)瀏覽器類型或者什么的。完全可以將兩個分支的結(jié)果都輸出。當(dāng)然,我們不應(yīng)該將這兩塊文字組合,中間應(yīng)該有我們理解的分割符。

      這樣做得好處是高性能。這個解釋器可以做得很小巧,由于并非完整執(zhí)行js,所以性能也較之迅速一些。缺點(diǎn)是由于是簡化的解釋器,因此和真實(shí)的結(jié)果會有差異。但是一般來說,信息只會多而不會少,(因?yàn)橥瑫r輸出了不同分支的結(jié)果),所以,對于搜索引擎的頁面分析來說,差不多是夠用了。

      2、用HTML渲染引擎完整的解析頁面,最后從顯示結(jié)果中取數(shù)據(jù)

      采用Gecko (Firefox) 或者Trident (mshtml.dll) (IE) 這些用于瀏覽器的 HTML 渲染引擎來對頁面進(jìn)行完整的解析和渲染。最后對這些引擎的解析結(jié)果進(jìn)行分析。

      這樣做得好處是和顯示結(jié)果最接近,因?yàn)樗麄兪琼撁娴恼鎸?shí)解析結(jié)果。但是缺點(diǎn)是性能相對較差,因?yàn)槭菍撁娴乃性氐耐暾馕觯宰隽撕芏嗯c提取文字信息無用的勞動,如果分析大數(shù)據(jù)量的頁面的時候,需要權(quán)衡一下。

    from: http://sskb.cn/yingxiao/914-search-java.htm

    posted on 2006-12-16 16:19 weidagang2046 閱讀(329) 評論(0)  編輯  收藏 所屬分類: Javascript

    主站蜘蛛池模板: 亚洲最大成人网色香蕉| 妞干网免费视频在线观看| 老司机免费午夜精品视频| 亚洲国产午夜精品理论片| 国产∨亚洲V天堂无码久久久| 国产最新凸凹视频免费| 久久久久久99av无码免费网站| 在线看片免费人成视频播| 日韩精品无码永久免费网站| 亚洲人成网站在线在线观看| 亚洲精品日韩专区silk| 西西人体44rt高清亚洲| 亚洲色精品aⅴ一区区三区| 亚洲中文无韩国r级电影 | 中文字幕在线观看亚洲视频| 久久久久亚洲AV片无码下载蜜桃| 亚洲日韩国产精品第一页一区| 亚洲成?Ⅴ人在线观看无码| 国产无遮挡吃胸膜奶免费看视频| 思思99re66在线精品免费观看| 无码免费午夜福利片在线| 99在线精品视频观看免费| 最近中文字幕完整版免费高清| 桃子视频在线观看高清免费视频| 成在人线av无码免费高潮喷水 | 中文字幕精品亚洲无线码一区| 免费在线观看的黄色网址| 国产一级淫片免费播放| 国产高清在线免费视频| 国产麻豆免费观看91| 免费jjzz在线播放国产| 亚洲av区一区二区三| 亚洲人成电影在线播放| 综合亚洲伊人午夜网| 国产精品亚洲а∨无码播放| 亚洲动漫精品无码av天堂| 亚洲小视频在线观看| 亚洲最大在线视频| 国产精品亚洲综合久久| 欧洲亚洲综合一区二区三区| 午夜在线亚洲男人午在线|