2012-11-30 89 views
2

我是網絡開發(和一般開發)的新手,我正在構建一個從第三方網站上刮取數據的Rails應用程序。我正在使用Nokogiri來解析我感興趣的特定html元素,並將這些元素存儲在數據庫中。我應該如何在我的web應用程序中存儲刮掉的HTML?

但是,我想保存整個頁面的html作爲備份,以防萬一我改變主意想要什麼類型的信息以及萬一網站移除網站(或更新它)。

存儲歸檔html的最佳做法是什麼? 我應該將它解壓爲一個字符串並將其放入數據庫中,將它寫入日誌或文本文件,或者是什麼?

編輯:
我應該澄清一下。如果我重新定義了我想要的數據類型,我每週都會按照10K個網站的順序進行爬網,並且預計只需要一次性訪問備份。例如,如果抓取聯合國有關國家人口數據的數據,並且最初看到年齡分佈,但後來意識到我也希望獲得性別分佈,那麼我想回到我的所有HTML存檔並拉出數據。我不會預料到這會發生很多事情(可能是每月1-3次),但是當它發生時,我會希望通過10K-100K列表檢索它。這項任務只需要幾個小時來完成10K左右的記錄,所以我猜每個網站的抓取時間應該至多爲1秒。我不需要任何版本控制功能。希望澄清。

+0

「最佳」是非常主觀的,並取決於你實際需要什麼。你會保持版本歷史?你需要搜索嗎?經常檢索?等等 –

+0

我編輯了這個問題,以更清楚地說明我需要什麼。讓我知道如果澄清。 – slykat

回答

1

我不確定這種情況下的「最佳做法」是什麼(它會因您的項目的具體情況而異),但作爲一個起點,我建議創建一個帶有URL字符串字段的模型和HTML本身的文本字段,並將頁面保存在那裏。您可以爲URL添加唯一性驗證程序,以確保不會將相同的HTML存儲兩次。

然後,您可以選擇添加模型方法以從HTML文本啓動nokogiri文檔,從而使用HTML字符串作爲「主」記錄(在數據庫中)並在需要時隨時生成nokogiri文檔。但是,正如@dave-newton指出的那樣,這很大程度上取決於你將如何處理這個HTML。

+0

謝謝,我認爲這可能對我正在做的事情有意義。我編輯了這個問題,以更好地瞭解我的需求 - 如果澄清,請告訴我。 – slykat

+0

只需閱讀您添加的筆記。既然你事先並不知道你將來需要什麼數據,並且既然你不需要優化檢索,我認爲我描述的方法可以正常工作。 –

0

我強烈建議將它保存到與您正在抓取的數據相同的數據庫中的表中。爲什麼改變什麼可行?按照通常的方式保存它,或者將其全部寫入單獨的數據庫,以防萬一,以防萬一,並保留一些表單或將refed數據鏈接到備份以防萬一。

相關問題