2013-05-10 263 views
0

我希望能夠下載網站的全部內容並在我的應用程序中使用這些數據。我以前使用NSURLConnection下載文件,但我不認爲它能夠從整個網站下載所有文件。我知道應用程序Site Sucker,但不認爲有一種方法可將其功能集成到我的應用程序中。我看着AFNetworking & ASIHttpRequest,但沒有看到對我有用的東西。任何想法/想法?謝謝。下載整個網站

+0

這個用法是爲了在未連接到互聯網時能夠處理數據。 – MCR 2013-05-10 15:24:52

回答

1

我懷疑你可以使用什麼開箱即用的方法,但你提到的現有庫(AFNetworking & ASIHttpRequest)會給你帶來很大的幫助。

工作方式是,您加載主網站。然後你通過源代碼找到該頁面用來顯示其內容並鏈接到其他頁面的任何資源。然後,您需要遞歸下載這些資源的內容及其資源。

正如你可以想像,有一些注意事項,以這種方式:

  1. 你將只能下載的源代碼中提到的文件。隱藏的文件或任何頁面未使用的文件將不會被下載,因爲應用程序不知道它們的存在。

  2. 請注意相對和絕對路徑:./image.jpg,/image.jpg,http://website.com/image.jpg,www.website.com/image.jpg等都可以鏈接到相同的圖像。

  3. 請記住,page1.html可能會鏈接到page2.html,反之亦然。如果你沒有進行任何檢查,這可能會導致無限循環。

  4. 檢查鏈接到外部網站的頁面 - 您可能不希望下載那些網站與外部鏈接的鏈接,並且在這裏您將整個Internet下載到具有8GB存儲空間的iPhone。

  5. 任何動態頁面(使用服務器端腳本語言(如PHP)的頁面)都將變成靜態頁面,因爲它們失去了服務器後端以向它們提供動態數據。

這些都是我可以想到的,但我相信還有更多。

+0

我認爲這是我必須走的路線......我只是希望找到一個現有的解決方案。感謝您的寫作,它會很有用。 – MCR 2013-05-10 17:18:23

+0

WGet https://www.gnu.org/software/wget/manual/將是一個很好的開始。至少使用靜態內容,它可以創建一個本地工作的存檔。 – 2016-04-06 00:24:03