我想将 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的主要内容,如果未能解决你的问题,请参考以下文章
《iOS Human Interface Guidelines》——Web View
如何在 Oracle APEX 中设置 SPOOL 脚本以将视图数据导出为 CSV?