如何从 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 代码,该代码定位文档中的第一个段落元素并返回其文本。您可以使用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 代码。

【讨论】:

以上是关于如何从 UIWebView 获取内容?的主要内容,如果未能解决你的问题,请参考以下文章

从 appdelegate swift 访问 UIwebview

如何从 UIWebView 获取内容?

使用手势将图像从 UIWebView 保存到相机胶卷

如何在 ios 中获取 UIWebview 中的内容

如何获取在 UIWebView 中显示的 HTML 页面的标题?

如何获取uiwebview的内容宽度?