如何从 UIWebView 获取内容?
Posted
技术标签:
【中文标题】如何从 UIWebView 获取内容?【英文标题】:How can I get the content from a UIWebView? 【发布时间】:2013-03-26 11:07:12 【问题描述】:我需要从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)"];
【问题讨论】:
【参考方案1】:最可靠的方法是在 Web 视图的上下文中执行一些 javascript 代码,该代码定位文档中的第一个段落元素并返回其文本。您可以使用UIWebView
的stringByEvaluatingJavaScriptFromString
方法来做到这一点。
下面的代码首先检索文档中带有标记名称 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 代码。
【讨论】:
以上是关于如何从 UIWebView 获取内容?的主要内容,如果未能解决你的问题,请参考以下文章
从 appdelegate swift 访问 UIwebview