| 導購 | 订阅 | 在线投稿
分享
 
 
 

關于搜索引擎頁面分析中的 javascript 處理的2個思路

來源:互聯網  2008-09-05 07:10:28  評論

在制作搜索引擎的時候、或者做頁面分析及數據提取的時候,經常面臨頁面中存在許多JavaScript,這些Javascript 比較煩人,因爲有相當部分頁面內容寫入到了這些js腳本的命令中,而導致正常的DOM分析看不到這些文字,而使其中的文字數據提取失敗。

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

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

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

這樣做的目的並不是要真正的完整執行這個javascript,而是將腳本中的字符串,按照其程序邏輯進行組合,最後輸出這個腳本的完整輸出。這樣自然不全面,肯定由于很多功能沒實現,導致輸出的字符串和真實的輸出不完全一樣。但是,如果不出意外,應該不會産生太多的遺漏。因爲所有的字符串輸出部分我們都實現了,那麽完全可以將這些字符串按照其將要輸出的邏輯組合在一起。

對于根據動態條件做動態的事情的問題,如果這些條件無法確定,比如根據浏覽器類型或者什麽的。完全可以將兩個分支的結果都輸出。當然,我們不應該將這兩塊文字組合,中間應該有我們理解的分割符。

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

2、用HTML渲染引擎完整的解析頁面,最後從顯示結果中取數據。

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

這樣做得好處是和顯示結果最接近,因爲他們是頁面的真實解析結果。但是缺點是性能相對較差,因爲是對頁面的所有元素的完整解析,所以做了很多與提取文字信息無用的勞動,如果分析大數據量的頁面的時候,需要權衡一下

在制作搜索引擎的時候、或者做頁面分析及數據提取的時候,經常面臨頁面中存在許多JavaScript,這些Javascript 比較煩人,因爲有相當部分頁面內容寫入到了這些js腳本的命令中,而導致正常的DOM分析看不到這些文字,而使其中的文字數據提取失敗。 當然,如果這個頁面模板確定,針對這個特定的頁面制作信息提取模板也不很難,每個頁面人工的分析出需要提取的信息的位置,然後制作模板。可是對于 general的網頁搜索的話,這就不大現實了。正巧前兩天和朋友討論到這個問題,有些想法。在這裏,提供兩個思路,供大家參考。 1、做一個簡化的 javascript 解釋器,執行腳本片段 做一個完整的 javascript 解釋器是比較難得,但是做一個簡化的 javascript 解釋器則很容易。我們不需要那些複雜的庫,我們只將基本的 javascript 語法實現,並且將涉及文字輸出的函數部分實現就可以了。 這樣做的目的並不是要真正的完整執行這個javascript,而是將腳本中的字符串,按照其程序邏輯進行組合,最後輸出這個腳本的完整輸出。這樣自然不全面,肯定由于很多功能沒實現,導致輸出的字符串和真實的輸出不完全一樣。但是,如果不出意外,應該不會産生太多的遺漏。因爲所有的字符串輸出部分我們都實現了,那麽完全可以將這些字符串按照其將要輸出的邏輯組合在一起。 對于根據動態條件做動態的事情的問題,如果這些條件無法確定,比如根據浏覽器類型或者什麽的。完全可以將兩個分支的結果都輸出。當然,我們不應該將這兩塊文字組合,中間應該有我們理解的分割符。 這樣做得好處是高性能。這個解釋器可以做得很小巧,由于並非完整執行js,所以性能也較之迅速一些。缺點是由于是簡化的解釋器,因此和真實的結果會有差異。但是一般來說,信息只會多而不會少,(因爲同時輸出了不同分支的結果),所以,對于搜索引擎的頁面分析來說,差不多是夠用了。 2、用HTML渲染引擎完整的解析頁面,最後從顯示結果中取數據。 采用Gecko (Firefox) 或者Trident (mshtml.dll) (IE) 這些用于浏覽器的 HTML 渲染引擎來對頁面進行完整的解析和渲染。最後對這些引擎的解析結果進行分析。 這樣做得好處是和顯示結果最接近,因爲他們是頁面的真實解析結果。但是缺點是性能相對較差,因爲是對頁面的所有元素的完整解析,所以做了很多與提取文字信息無用的勞動,如果分析大數據量的頁面的時候,需要權衡一下
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有