用內嵌瀏覽器做Spider

現在隨着JavaScript和Ajax在網頁中的大量應用,傳統的Spider面臨越來越大的挑戰,越來越多的網頁信息是通過JavaScript動態生成的、Ajax讓頁面概念的定義不再完整。不知道像百度、谷歌這樣的大搜索引擎公司是如何處理這些信息的。自己最近將近一個月的時間在做基於內嵌瀏覽器的Spider,現在已經接近尾聲,但越做越感覺難度比當初想象得要難得多。
       自己調研過很多內嵌瀏覽器的方案(見我以前的博客文章),最後還是選擇了著名的Web測試工具:Selenium,它的好處是全方位的,有廣泛的用戶羣和活躍的開發團隊(Google公司資助並且使用Selenium),核心代碼通過JavaScript完成,可以運行在所有的平臺和瀏覽器中(當然你不能指望在Unix/Linux中運行IE),有Server版本和各種編程語言的Client API,基於WebDriver的Selenium2讓人期待。目前來看它最大的缺陷是JavaScript的“同域限制”,不過它也提供了繞開這個限制的experimental版本,目前來看絕大多數情況下都不是太大問題。實際開發中最意想不到的麻煩是它無法處理瀏覽器的各種彈出對話框,比如多次回退到同一個通過表單產生的頁面是彈出“是否重新發送Post請求?“的對話框,對用戶來說它是一個有用的提示,但對自動執行的Spider來說它意味着程序的終結。爲了繞開這個難題,自己通過改寫Selenium的API實現打開多窗口的方法,但還是有些問題繞不開。
       要實現一個完善的基於Selenium的Spider,必須掌握JavaScript和知道如何擴展和改寫核心API,自己買來了“Learning JavaScript"的入門書,自己打算認真學習這門現在最常接觸到的工具。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章