iPhone: Как скачать полный сайт? - PullRequest
3 голосов
/ 19 июня 2010

Какой подход вы порекомендуете мне для загрузки веб-сайта (один HTML-сайт со всеми включенными изображениями) на iPhone?

Вопрос заключается в том, как сканировать все эти крошечные фрагменты (Javascripts, изображения, CSS) и сохранять их локально. Речь идет не о конкретной реализации (я знаю, как использовать NSURLRequest и прочее. Я ищу подход сканирования / паука).

Перерывы на джейл не будут работать, так как он предназначен для официального приложения (App Store).

С уважением,

Stefan

Ответы [ 5 ]

3 голосов
/ 19 июня 2010

Загрузка? Или получить 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"]];

EDIT: Для этого подхода вам, вероятно, лучше всего использовать библиотеку регулярных выражений для iPhone, чтобы проанализировать строку и найти нужные объекты.

Вы можете использовать это: RegexKitLite и выполнить несколько выражений Regex, чтобы найти, например, <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];
0 голосов
/ 06 августа 2014

Искал похожую функциональность и нашел это. Не могу претендовать на кредит, просто хотел убедиться, что он был упомянут (в качестве дополнительного решения) для людей, заинтересованных в нем.

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

0 голосов
/ 10 января 2014

Вот ссылка на Appstore https://itunes.apple.com/us/app/sitesucker/id346896838?mt=8 Приложение загружает целые веб-сайты на телефон.

0 голосов
/ 19 июня 2010
  • Установите wget на ваш сломанный iPhone с джейлом
  • Используйте опции spanning hosts , чтобы загрузить все с сайта.

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

Но почему вы хотите сделать это на мобильном устройстве? Это то, что должно быть сделано на реальном компьютере с большим объемом памяти, дискового пространства, пропускной способности и несколькими ядрами процессора.

0 голосов
/ 19 июня 2010

Вы не можете сохранять веб-сайты на свой телефон, только просматривать их (если у вас нет джейлбрейка.)

Надеюсь, это прояснит ваше замешательство, Lee.

...