2014-03-07 34 views
0

我正在为ios编写应用程序以从网页中提取信息,但是,页面上的相关部分是通过javascript构建的。所以当它被webview加载时,javascript会被执行,并且信息显示没有问题。如果我尝试通过使用以下方法将页面加载到字符串中,那么JavaScript将被加载,但实际上并未执行,因此字符串中没有有用的数据。我想将ios web视图的内容导出为html

NSData *urlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:fullURL]]; 
NSString *responseString = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 

除了将页面加载到webview并从那里导出,还有其他的方法吗?如果不是,你怎么做?

回答

0

我不确定是否有另外一种让UIWebView执行JS并呈现页面的方法,但是如果你最终走这条路线,你可以抓住整个页面的HTML并将其传递给像这样的本地端:

[dummyWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].outerHTML;"];

聆听window.load事件可能会更好,知道什么时候该页面已完成通过所有的JS

运气好走!

+0

这正是我一直在寻找。听window.load是必须的。 – Mr404servererror

0

您委托设为web视图:self.webView.delegate = self;和实施UIWebViewDelegate:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML"]; 
    NSLog(@"html1 = %@", html); 
    // or use 
    NSString *html2 = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]; 
    NSLog(@"html2 = %@", html2); 
} 
+0

我尝试了webViewDidFinishLoad,但即使页面已加载,我不认为它会等待JavaScript完成执行。 – Mr404servererror