2014-03-07 31 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