UIWebView获取HTML源代码

4

我正在尝试获取UIWebView的HTML源代码,而不需要重新下载它(也就是说,不需要进行另一个下载,如[NSData dataWithContentsOfURL:(NSURL*)URL]或发出NSURLRequest)。浏览UIWebView头文件和文档,似乎没有办法访问当前加载的数据源的NSData。我有什么遗漏吗?


我有同样的问题,因为我的Webview在某些情况下会出现空白,并且我想查看其中是否有HTML。我认为[webview stringByEvaluatingJavaScriptFromString:script]可能是一个开始,但我不知道什么javascript会带回整个文档。 - TahoeWolverine
正如下面的答案所说,反向操作更容易(获取数据,然后将其加载到 Web 视图中)。我编写了一个下载数据的包装类(使其更简单,您还可以获得 MIME 类型),如果有人需要,只需评论一下,如果它不适合在评论中发布,我会将其作为答案发布。 但是我想知道如何使返回/前进按钮工作。有人能告诉我吗? - Alexandre Cassagne
@Alexandre Cassagne,请问您能否发布您的包装类或在http://snipplr.com/上发布它?这正是我需要的,因为我无法按照我计划的另一种方式获取HTML源代码/数据。谢谢。 - 0SX
是的,我现在不在我的 Mac 上,但会尽快把它发送给你。这只是一种简单的使用 NSURLRequest 的方法,没有什么花哨的东西。 - Alexandre Cassagne
各位,请看,我将一个测试应用程序添加到了演示中。没有太多花哨的东西,但它在那里。 附言:如果有人知道如何进行预处理来确定它是否会编译为iOS或Mac OS,请告诉我。 - Alexandre Cassagne
我太傻了,忘记放链接了--' https://github.com/AlexandreCassagne/SimpleRequestDownload 有人能告诉我它是否正常工作吗? - Alexandre Cassagne
2个回答

24

UIWebView可以执行JavaScript代码,因此可以通过它来解决问题。

NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML"];

谢谢!这也处理了从JavaScript渲染HTML的情况。 - mkko

1

逆向操作可以实现您想要的功能。也就是,将URL加载到NSData对象中,然后使用- loadData:MIMEType:textEncodingName:baseURL:从该对象加载UIWebView。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接