You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS开发:如何提取HTML页面中特定frame标签的src属性值

最简实现方案:直接用JS定位frame并提取src

首先你之前拿到空的innerHTML,大概率是WebView还没完成页面加载就调用了stringByEvaluatingJavaScriptFromString:,或者没必要去拿整个HTML字符串——我们换个更直接的思路,直接用JS定位那个唯一的frame标签,一步拿到src属性。

步骤1:在WebView加载完成后执行JS

不管你用的是UIWebView还是WKWebView,都要等页面加载完成再操作,不然会拿不到元素:

如果你用的是UIWebView:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // 直接定位唯一的frame并提取src
    NSString *frameSrc = [webView stringByEvaluatingJavaScriptFromString:@"document.querySelector('frame').src"];
    NSLog(@"提取到的src内容:%@", frameSrc);
}

如果你用的是WKWebView:

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    [webView evaluateJavaScript:@"document.querySelector('frame').src" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
        if (!error && result) {
            NSString *frameSrc = result;
            NSLog(@"提取到的src内容:%@", frameSrc);
        } else {
            NSLog(@"提取失败:%@", error.localizedDescription);
        }
    }];
}

为什么这是最简方法?

  • document.querySelector('frame')会直接找到页面里的第一个(也就是你说的唯一的)frame元素,不用去处理冗长的HTML字符串,避免了正则解析或者字符串切割的麻烦。
  • 直接访问.src属性就能拿到你要的文本,一步到位,效率比先拿整个HTML再处理高得多。

额外小提醒

如果遇到JS执行报错,先检查这两点:

  1. 页面里确实存在唯一的<frame>标签;
  2. WKWebView的配置里javaScriptEnabled已经设为YES(默认是开启的,但保险起见确认下)。

内容的提问来源于stack exchange,提问作者MichiZH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:21:04