iPhone:如何下载完整的网站?

时间:2010-06-18 21:13:29

标签: iphone cocoa-touch download web-crawler

您建议我以何种方式将网站(包含所有图片的HTML网站)下载到iPhone?

问题是如何抓取所有那些微小的部分(Javascripts,图像,CSS)并在本地保存它们。这不是具体实现(我知道如何使用NSURLRequest和东西。我正在寻找爬行/蜘蛛方法)。

越狱不起作用,因为它适用于官方(App Store)应用程序。

此致

的Stefan

5 个答案:

答案 0 :(得分:3)

下载?或者获取网站的HTML源代码并使用UIWebView显示它?

如果是最后一个,你可以这样做:

NSString *data = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://apple.com"] encoding:NSUTF8StringEncoding error:NULL];

// Load UIWebView with data
[webView loadHTMLString:data baseURL:[NSURL URLWithString:@"http://apple.com"]];

修改 对于这种方法,您可能最好使用iPhone的正则表达式库来解析字符串并找到所需的对象。

您可以使用此RegexKitLite,然后执行几个正则表达式查找,例如<link rel="%" href="*">src="*"。但是你必须记住存储它们并用新路径替换*的值。

存储文件:

您将从正则表达式方法中获取url,并且可以从URL中编写文件:

NSFileManager *fileManager = [[NSFileManager alloc] init];
NSString rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString pathToCurrentSite = [rootPath stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@/", fullUrlToPage]];
for (urlString in urlStrings) {
    NSData *stringData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
    [fileManager createFileAtPath:[pathToCurrentSite stringByAppendingPathComponent:urlString] contents:stringData attributes:nil];
}
NSString *data;
NSData *pageData = [data dataUsingEncoding:NSASCIIStringEncoding];
[fileManager createFileAtPath:[pathToCurrentSite stringByAppendingPathComponent:@"index"] contents:pageData attributes:nil];
[fileManager release];

答案 1 :(得分:0)

  • 在您的jail broken iPhone上安装wget
  • 使用spanning hosts选项从网站下载所有内容。

    wget -rH -Dserver.com http://www.server.com/

但为什么要在移动设备上执行此操作?这是应该在具有大量内存,磁盘空间,带宽和多个CPU核心的真实计算机上完成的事情。

答案 2 :(得分:0)

正在寻找类似的功能并找到了这个。无法为此声明任何功劳,只是想确保它对那些对此感兴趣的人提及(作为一种插件解决方案)。

http://robnapier.net/offline-uiwebview-nsurlprotocol

答案 3 :(得分:-1)

您无法将网站保存到手机中,只能查看它们(除非您的越狱。)

希望这可以解决你的困惑, 李。

答案 4 :(得分:-1)

以下是Appstore链接https://itunes.apple.com/us/app/sitesucker/id346896838?mt=8 该应用程序将整个网站原生下载到手机上。