【问题标题】:Best strategy to build custom batch search engine?构建自定义批量搜索引擎的最佳策略?
【发布时间】:2010-02-11 15:45:02
【问题描述】:
您好,我需要建立一个类似于 Indeed.com 和其他许多网站的网站,它可以跟踪多个广告网站并解析 HTML 以列出我自己网站中的广告。
我知道每个源站点都需要特定的策略。那没问题。我担心的是我想以批处理方式每小时扫描一次站点。
有没有更合适的策略来实现这一点?有人告诉我 Perl 是一种非常强大的批处理脚本语言。是这样吗?我该如何开始?
最好的,
【问题讨论】:
标签:
perl
batch-file
search-engine
【解决方案1】:
好消息是,您可以在 Perl 中执行此操作。坏消息是这将变得复杂。就像使用任何语言一样。
首先阅读Learning Perl。
接下来,您需要将爬虫代码放在一起。
从一个简单的脚本开始,一次读取一页。
获取网页的模块有很多。使用哪个取决于您的需求。如果您需要抓取 Javascript 生成的页面,它会变得更加复杂。从 LWP::Simple 或 WWW::Mechanize 开始。您可以从那里扩展。
还有许多用于解析 HTML 的模块。 HTML::Treebuilder 是一个功能强大的模块,对我来说效果很好。
一旦您可以可靠地下载和解析单个页面,您就需要添加爬虫逻辑。接下来,您必须决定如何遍历站点——首先是广度还是深度?您要使用递归算法吗?或者可能是一种程序方法?
如果您要扫描许多需要扫描的页面,您可能需要创建一个控制器来管理多个蜘蛛。您可以使用 Coro、AnyEvent、POE、线程或基于 fork 的策略来管理您的工作人员。您选择什么取决于您的需求。
您可以使用 DBI 模块和适当的驱动程序(例如 DBD::MySQL)将数据插入到您的数据库中。
您现在要做的就是生成您的网络应用程序。有许多不同级别的复杂性和功能可用的工具包。 CGI::Application 和 Catalyst 是两个流行的库。 HTML::Mason 和 Squatting 是其他一些选项。
我列出的所有模块都可以在 CPAN 上找到。如果使用得当,CPAN 将为您节省大量工作。对于许多任务来说,问题在于选择太多,而不是缺少选择。
这本书当然可以在任何出售书籍的地方买到。