访问JavaScript在运行时创建的元素(document.write)

访问JavaScript在运行时创建的元素(document.write),javascript,iphone,html,html-parsing,Javascript,Iphone,Html,Html Parsing,我正在制作一个iphone应用程序,可以从web获取数据,我使用HPPLE解析html,所有这些都可以正常工作,但在同样的情况下,我无法访问html网页中由JavaScript(document.write)动态创建的元素。这是我的html web源代码 .. .. .. .. .. .. .. .. .. .. .. .. 我可以通过safari浏览器的开发工具看到所有标记为的元素,但是当我尝试下载html代码时,我得到的源代码中没有我想要的html标记。对不起,我的英语不好。我希望有人能

我正在制作一个iphone应用程序,可以从web获取数据,我使用HPPLE解析html,所有这些都可以正常工作,但在同样的情况下,我无法访问html网页中由JavaScript(document.write)动态创建的元素。这是我的html web源代码


..
..
..
..
..
..
..
..
..
..
..
..

我可以通过safari浏览器的开发工具看到所有标记为的元素,但是当我尝试下载html代码时,我得到的源代码中没有我想要的html标记。对不起,我的英语不好。我希望有人能帮助我。

你可以通过浏览器的开发工具获得这样的HTML。右键单击
标记并选择“编辑为Html”。复制此代码并将其粘贴到某个html文件中


您还可以复制部分代码。在这种情况下,您需要右键单击包含所需代码的特定标记(包装标记)。

您可以使用浏览器的开发人员工具获得此类HTML。右键单击
标记并选择“编辑为Html”。复制此代码并将其粘贴到某个html文件中


您还可以复制部分代码。在本例中,您需要右键单击特定标记,该标记包含您需要的代码(包装标记)。

我本人从未使用过hpple,但查看描述,它没有说明如何解析和执行javascript

您在Safari浏览器工具中看到的是。这是浏览器从HTML生成的内容。加载初始HTML后,可以使用Javascript对其进行修改


hpple旨在解析原始HTML,但不包含任何使用javascript创建的DOM元素。所以你的车卡在那里了。希望这里有人知道一种可以解析javascript的工具,这样你就可以做你想做的事情。

我自己从来没有使用过hpple,但看看描述,它没有提到解析和执行javascript

您在Safari浏览器工具中看到的是。这是浏览器从HTML生成的内容。加载初始HTML后,可以使用Javascript对其进行修改


hpple旨在解析原始HTML,但不包含任何使用javascript创建的DOM元素。所以你的车卡在那里了。希望这里有人知道一种可以解析javascript的工具,这样你就可以随心所欲了。

获得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
}

现在您已经有了
文档
文本,可以将其传递给HPPLE

获得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
}

既然你有了
文档
文本,你可以把它传递给HPPLE

thans,但是我想下载html数据,而不是复制和复制,我的朋友,你会有麻烦的。像“wget”这样的工具将无法帮助您。您需要下载javascript并复制其操作。这不仅仅是html解析。它的解析和执行javascript。我从来没有做过那样的事。如果我需要的话,我会从谷歌搜索“浏览器框架”这个主题开始,但我想下载html数据,而不是复制和复制,我的朋友,你会有麻烦的。像“wget”这样的工具将无法帮助您。您需要下载javascript并复制其操作。这不仅仅是html解析。它的解析和执行javascript。我从来没有做过那样的事。如果我需要的话,我会从谷歌搜索主题开始:“浏览器框架”谢谢Jason,那么webViewDidFinishLoad呢:这个方法叫做multiple。这个方法在页面上每帧调用一次。如果您知道页面没有框架集/iframes,那么您可以假设它将只在一次调用一次,那么webViewDidFinishLoad呢:这个方法称为multiple。该方法在页面上每帧调用一次。如果您知道页面没有框架集/iframes,那么您可以假定它只被调用一次