【问题标题】:Download entire website下载整个网站
【发布时间】:2013-05-10 15:18:40
【问题描述】:

我希望能够下载网站的全部内容并在我的应用中使用这些数据。我过去曾使用 NSURLConnection 下载文件,但我不相信它能够从整个网站下载所有文件。我知道应用程序Site Sucker,但不认为有办法将它的功能集成到我的应用程序中。我查看了 AFNetworking 和 ASIHttpRequest,但没有看到任何对我有用的东西。有什么想法/想法吗?谢谢。

【问题讨论】:

  • 这个用途是让我能够在没有连接到互联网的情况下操作数据。

标签: ios objective-c ios5 nsurlconnection afnetworking


【解决方案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. 检查链接到外部网站的页面——您可能不想下载那些,因为许多网站都有外部链接,在这里您可以将整个互联网下载到具有 8GB 存储空间的 iPhone 上。

  5. 任何动态页面(使用服务器端脚本语言的页面,例如 PHP)都会变成静态页面,因为它们失去了为它们提供动态数据的服务器后端。

这些是我能想到的,但我相信还有更多。

【讨论】:

  • 我认为这是我必须走的路……我只是希望找到一个现有的解决方案。感谢您的文章,它会很有用。
  • WGet gnu.org/software/wget/manual 将是一个好的开始。至少使用静态内容,它可以创建在本地工作的存档。
猜你喜欢
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多