爬行引擎体系结构-Java/Perl集成
我希望围绕我们的webcrawling perl脚本开发一个管理和管理解决方案。基本上,现在我们的脚本保存在SVN中,并由SysAdmin/devs等手动启动。每当我们需要从新源检索数据时,我们必须创建一个带有业务说明和目标的记录单。正如你所想象的,这不是一个最优的解决方案 该系统有3个一致的主题:爬行引擎体系结构-Java/Perl集成,java,perl,hadoop,nutch,web-crawler,Java,Perl,Hadoop,Nutch,Web Crawler,我希望围绕我们的webcrawling perl脚本开发一个管理和管理解决方案。基本上,现在我们的脚本保存在SVN中,并由SysAdmin/devs等手动启动。每当我们需要从新源检索数据时,我们必须创建一个带有业务说明和目标的记录单。正如你所想象的,这不是一个最优的解决方案 该系统有3个一致的主题: 由于缺少更好的短语,数据检索具有“概念结构”,即信息检索遵循特定路径 我们只寻找非常具体的信息,所以我们暂时不必担心大量的爬行(想想成千上万的页面和数百万的页面) 爬网是基于url的,而不是基于站点
- 使用Java作为管理和执行perl脚本的接口
- 使用Java进行配置和数据访问
- 坚持使用perl进行检索
在我看来,如果使用纯Perl或纯Java,您将得到一个更易于维护的解决方案。如果这意味着您必须学习Perl,那么就这样吧。(用Perl编写结构良好、可维护的应用程序是可能的。你只需要遵守规则即可。)我曾经用Lucene用Java创建过爬虫程序,事实上我以前回答过一个有关web爬虫程序的实际创建过程和结构的相关问题。这并不直接适用于你的问题,但我认为值得在这里提及 无论如何,我必须同意,最好使用纯Java或纯perl解决方案,而不是两者的混合,然而我的观点是基于这样一个事实,即它们彼此完全不同,将两种(或更多)不同的思维定势融合在一起通常不是一个人能做的最理想的事情 您所描述的内容也让我思考如何改进我自己的爬虫程序(我在第一段中链接的另一个答案中引用的爬虫程序),主要是关于实际爬虫模式的部分。虽然我确实相信,开发一种手动指示Java应用程序以特定模式抓取某个URL的方法会花费更多的时间,就像在perl中一样,在Java中这样做最终会产生一个更有用的软件,它有各种有趣的小特性,维护起来也不会很痛苦 另一方面,Java的脚本方面有点简单,有一个脚本API,但由于脚本只是松散地定义您想要做的事情,Java有时会非常严格,所以它不像人们希望的那样灵活
要真正给出一个意见,我认为您应该尽量减少编程语言中较难维护的部分。我不知道这是给你的,但我想是perl。基本上,使用其中一种语言并充分使用它,不要将另一种语言用作快捷方式。您可以尝试使用HtmlUnit或Selenium进行网络绘图,并使用Quartz进行调度,或者将整个项目放在应用服务器(如Glassfish)中。如果您想继续使用Perl,您可以使用crontab。可用于webcrawling的Perl API可能没有正确的cookie处理。我希望这对你来说不是问题。我所知道的唯一一个黑客就是打电话给wget。谢谢Stephen和Esko。本能地,我也有同样的感觉。我自己对混搭感觉不太舒服。我会让你知道我们最终的决定。