用内嵌浏览器做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"的入门书,自己打算认真学习这门现在最常接触到的工具。

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