我想将 ios Web 视图的内容导出为 html

Posted

技术标签:

【中文标题】我想将 ios Web 视图的内容导出为 html【英文标题】:I would like to export the contents of ios web view as html 【发布时间】:2014-03-07 01:28:53 【问题描述】:

我正在为 ios 编写一个应用程序来从网页中提取信息,但是,页面上的相关部分是由 javascript 构建的。所以当它被webview加载时,执行了javascript并且信息显示没有问题。如果我尝试使用以下方法将页面加载到字符串中,则会加载 javascript,但并未实际执行,因此该字符串中没有有用的数据。

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

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

【问题讨论】:

【参考方案1】:

我不确定除了让 UIWebView 执行 JS 并呈现页面之外是否还有其他方法,但如果你最终选择了这条路线,你可以抓取整个页面的 html 并将其传递给像这样的原生端:

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

收听window.load事件可能会更好地了解页面何时完成所有JS

祝你好运!

【讨论】:

这正是我想要的。监听 window.load 是必须的。【参考方案2】:

您将委托设置为 webView: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);

【讨论】:

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

以上是关于我想将 ios Web 视图的内容导出为 html的主要内容,如果未能解决你的问题,请参考以下文章

获取 html 代码并编辑然后加载到 web 视图

《iOS Human Interface Guidelines》——Web View

将 html 表导出到一列上有 tinymce 的单词

如何在 Oracle APEX 中设置 SPOOL 脚本以将视图数据导出为 CSV?

如何用图像作为背景填充 iOS 堆栈视图(UIStackView)?

从视图调用控制器操作而不更改页面