我正在制作一个从网络上获取数据的iphone应用程序,我使用HPPLE解析html,一切正常但在同样的情况下我有问题访问html网页中的JavaScript(document.write)动态创建的元素。这是我的html网络来源page source
<table dir = "rtl .......">
<tbody>
<script src = "get.aspx?type=js&file=ajax&rev=3"......>
<script language = "JavaScript" src = "get.aspx?type=js&file=mc&rev=6"></script>
<script>..</script>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<script>..</script>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
我可以看到标有&lt;的所有元素TR&GT;使用safari浏览器的开发者工具,但是当我尝试下载html代码时,我得到的源代码中不包含我想要的html标签。我的英语很糟糕。我希望有人帮助我。
答案 0 :(得分:2)
获得JavaScript支持的最简单的解决方案是使用UIWebView
。它不需要添加到视图层次结构中。
UIWebView *webView = [[UIWebView alloc] init];
NSString *url = @"http://www.google.com";
webView.delegate = self;
frames = 0; // NSUInteger instance variable to track frame loads
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
UIWebViewDelegate
方法
- (void)webViewDidStartLoad:(UIWebView *)webView {
frames++;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
frames--;
if (frames > 0) return;
NSString *document = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
// Use HPPLE to parse
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
// Handle error
}
现在您已拥有document
文字,您可以将其传递给HPPLE
答案 1 :(得分:1)
您可以使用浏览器的开发人员工具获取此类HTML。右键单击<html>
标签,然后选择“编辑为Html”。复制此代码并将其粘贴到某个html文件中。
您还可以复制部分代码。在这种情况下,您需要右键单击包含所需代码的特定标记(包装标记)。
答案 2 :(得分:1)
我自己从未使用过hpple,但是看一下描述,它没有说明解析和执行javascript。
您在Safari浏览器工具中看到的是DOM的直观表示。这是浏览器从HTML生成的内容。加载初始HTML后,可以使用Javascript对其进行修改。
hpple旨在解析原始HTML,但不包含任何使用javascript创建的DOM元素。所以你卡在那里。希望有人在这里知道一个可以解析javascript的工具,这样你就可以做你想做的事。