1

我需要实现一个网络爬虫来爬到一个网站每天获取数据。做这个的最好方式是什么?我应该写一个时髦的脚本并让它每天重复吗?如果我使用脚本,我不能使用域类。

有什么建议吗?

4

2 回答 2

5

我建议使用 XmlSlurper 从站点读取数据,将其放入 Grails 的服务中,然后使用 Quartz 插件对其进行调度。这样您就可以访问 Grails 中的域模型,并且可以使用 slurper 的酷炫功能来获取 HTML。您可能还需要像 Nekohtml http://nekohtml.sourceforge.net这样的解析器。

于 2012-12-01T10:29:28.080 回答
0

我会通过 Quartz 使用 Cron 作业创建服务并安排它。

服务本身应该使用 selenium 进行爬网。根据您需要抓取的站点,您可能需要检查您需要多好的浏览器来支持 JavaScript。Selenium 中的 May e Htmlunit 不会削减它。

因此,您需要确保可以在 Grails 机器上安装 Firefox 或 Chrome。为了更进一步并将浏览器安装与您的服务器分开,您可以将另一台机器用作 Selenium 网格节点,将服务器用作网格集线器,所有节点都在此处连接。您的 Grails 服务现在不需要 FirefoxDriver 或 ChromeDriver 来抓取,而是需要 RemoteDriver,它与您的 Selenium 节点对话。

也许,为了分离爬虫和 Grails 应用程序的反馈,您可能想要使用消息系统。APMQ 与 Apache Camel 的结合将使您走得更远。如果您使用 Camel,请查看 Camel 如何帮助您使用 Quartz

于 2012-12-05T12:39:30.890 回答