2013-03-26 61 views
0

我需要每一頁的從UIWebView第一段。我怎樣才能得到這個?如何從UIWebView獲取內容?

我也有一個正則表達式檢測一個代碼,但它給人的段落類的名稱,而不是一段內容:

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<p\\s[\\s\\S]*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?" 
          options:NSRegularExpressionCaseInsensitive 
          error:&error]; 

[regex enumerateMatchesInString:html 
         options:0 
         range:NSMakeRange(0, [html length]) 
         usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { 

    NSString *img = [html substringWithRange:[result rangeAtIndex:2]]; 
    NSLog(@"img src %@",img); 
}]; 

NSString *classs=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementbyClassName(img)"]; 

回答

0

最穩健的方式做,這是在上下文中執行JavaScript代碼在文檔中查找第一個段落元素並返回其文本的網頁視圖。爲此,您可以使用UIWebViewstringByEvaluatingJavaScriptFromString方法。

下面的代碼首先檢索文檔中所有元素的數組,標籤名稱爲P(假定您正在查找的文本位於這些元素中,否則您將需要執行更多工作)。然後檢查是否至少有一個段落元素,如果是,則返回其文本內容。否則,它返回空字符串。

- (void)webViewDidFinishLoad:(UIWebView *)_webView 
{ 
    NSString *code = @"var paragraphs = document.getElementsByTagName('P');" 
         "paragraphs.length > 0 ? paragraphs[0].innerText : '';"; 
    NSString *text = [_webView stringByEvaluatingJavaScriptFromString: code]; 
    // ... do something with text ... 
} 

如果您想檢查或更改文檔的其他方面,則可以在Web視圖的上下文中運行任意的JavaScript代碼。