2013-05-10 138 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