我需要實現一個網絡爬蟲來抓取網站以便每天獲取數據。做這個的最好方式是什麼?我應該寫一個groovy腳本並讓它每天重複一次嗎?如果我使用腳本,我不能使用域類。Groovy和Grails中的網絡爬蟲每天爬行
有什麼建議嗎?
我需要實現一個網絡爬蟲來抓取網站以便每天獲取數據。做這個的最好方式是什麼?我應該寫一個groovy腳本並讓它每天重複一次嗎?如果我使用腳本,我不能使用域類。Groovy和Grails中的網絡爬蟲每天爬行
有什麼建議嗎?
我建議使用XmlSlurper從網站讀取數據,在Grails中使用服務,然後使用Quartz插件來安排它。這樣你就可以訪問Grails中的領域模型,並且你可以使用slurper的酷派來獲取HTML。您可能還需要像Nekohtml http://nekohtml.sourceforge.net這樣的解析器。
我會創建服務並通過Quartz使用Cron作業進行安排。
服務本身應該使用硒進行爬網。根據您需要抓取哪些網站,您可能需要檢查您的JavaScript支持需要多少瀏覽器。可能在硒中的Htmlunit不會削減它。
因此,您需要確保您可以在Grails機器上安裝Firefox或Chrome。 爲了更進一步並將瀏覽器安裝與服務器分開,您可以將其他機器用作Selenium網格節點,並將服務器用作所有節點連接的網格集線器。 您的Grails服務現在不需要FirefoxDriver或ChromeDriver進行爬網,但RemoteDriver會與您的Selenium節點進行會話,而不是。
也許,爲了分離爬蟲和Grails應用程序的反饋,您可能需要使用消息傳遞系統。 APMQ與Apache Camel的結合將使你走得很遠。 如果你使用駱駝,看看駱駝如何可以幫助你與石英
你可能會嘗試http://groovy.codehaus.org/modules/http-builder/doc/get.html爲您的抓地力泥漿(並解析)需求,以及Quartz /服務解決方案。 –