首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法从UIWebView获取HTML字符串

问题描述:无法从UIWebView获取HTML字符串

解答: UIWebView是iOS中的一个控件,用于显示网页内容。如果想要从UIWebView中获取HTML字符串,可以通过以下方法实现:

  1. 使用JavaScript获取HTML内容: 可以使用UIWebView的stringByEvaluatingJavaScript方法来执行JavaScript代码,从而获取HTML内容。具体步骤如下:
  • 首先,使用JavaScript代码获取整个网页的HTML内容,例如:document.documentElement.outerHTML
  • 然后,使用UIWebView的stringByEvaluatingJavaScript方法执行上述JavaScript代码,获取到HTML字符串。

示例代码如下:

代码语言:txt
复制
let htmlString = webView.stringByEvaluatingJavaScript(from: "document.documentElement.outerHTML")
  1. 使用UIWebViewDelegate获取HTML内容: 还可以利用UIWebViewDelegate中的方法来获取HTML内容。具体步骤如下:
  • 首先,设置UIWebView的delegate为当前类。
  • 然后,实现UIWebViewDelegate中的webViewDidFinishLoad方法,在该方法中可以获取到网页加载完成后的HTML内容。
  • 最后,通过webView的stringByEvaluatingJavaScript方法获取到HTML字符串。

示例代码如下:

代码语言:txt
复制
class ViewController: UIViewController, UIWebViewDelegate {
    @IBOutlet weak var webView: UIWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        webView.delegate = self
        
        // 加载网页
        if let url = URL(string: "https://www.example.com") {
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        }
    }
    
    func webViewDidFinishLoad(_ webView: UIWebView) {
        if let htmlString = webView.stringByEvaluatingJavaScript(from: "document.documentElement.outerHTML") {
            print(htmlString)
        }
    }
}

这样就可以获取到UIWebView中加载的网页的HTML内容了。

UIWebView是一个废弃的控件,从iOS 12开始,苹果推出了WKWebView,是UIWebView的替代品。建议使用WKWebView来显示网页内容,并且获取HTML字符串的方法也略有不同。如果使用WKWebView,可以使用以下方法来获取HTML字符串:

  1. 使用WKWebView的evaluateJavaScript方法来执行JavaScript代码,获取HTML内容。示例代码如下:
代码语言:txt
复制
let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
webView.load(URLRequest(url: URL(string: "https://www.example.com")!))
webView.evaluateJavaScript("document.documentElement.outerHTML") { (result, error) in
    if let htmlString = result as? String {
        print(htmlString)
    }
}

请注意,在使用WKWebView时,需要导入WebKit框架,并且在Info.plist文件中添加"App Transport Security Settings"键,并设置"Allow Arbitrary Loads"为"YES",以允许加载非HTTPS的网页。

总结: 无法从UIWebView获取HTML字符串可以通过上述方法实现。但值得注意的是,UIWebView是废弃的控件,建议使用WKWebView来替代。这些方法在实际开发中有广泛的应用场景,比如需要对网页内容进行解析、分析或者自定义处理等。腾讯云相关产品中,与网页内容分析相关的产品包括云智能Web服务、OCR文字识别等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS与JS的交互

    使用本地的h5文件加载一个网页 NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"testWebPage" ofType:@"html...客户端要接受响应并做后续处理这就相当于js调起了iOS, 2.在真实的使用时,客户端需要和h5协调,双方需要统一监听的字段 3.参数问题:如果此时的交互需要传递参数,参数也可以放在链接里,同样通过识别字符串的方法来获取...*/ //第二步:拿到链接字符串的后续部分,然后分割字符串得到参数数据 NSMutableString *linkmStr = [NSMutableString...protocolJSHandlerProtocol //单参数方法 - (void)sayHello:(NSString*)greeting; //多参数的方法 //由于涉及到多参数的问题,第二个参数开始...,外部参数名都要使用大写开头 //因为JS调用OC方法时,是将OC方法拼接连成字符串,如果无法区分就会造成无法识别 //比如对于下面的OC方法,JS调用时 //javascript.sayHelloToWithGreeting

    4.1K70

    UI篇- UIWebView使用大全

    加载百度编译器编辑的HTML文本 ******** 使用UIWebView 加载 HTML图文文本 ********* //self.newsM.content为网络返回的原始图文信息。...web页面内容信息,此处获取的是个json字符串 SBJsonParser *parserJson=[[[SBJsonParser alloc]init]autorelease]; NSDictionary...有两种方式可根据加载内容 获取UIWebView的合适高度,但都需要在网页内容加载完成后才可以,即需要在webViewDidFinishLoad回调中使用。...UIWebView在 iOS11中的使用。 ? UIWebView 在iOS 11上 当顶部的 y值设为 0 时,是依然无法盖住UIStatusBar区域的,但是滚动时就会出现问题了。...如何获取UIWebview加载内容的标题 - (void)webViewDidFinishLoad:(UIWebView *)webView { titleLabel.text = [webView

    2K10

    Python新手写出漂亮的爬虫代码1——html获取信息

    本篇博文将从以下几个方面进行讲解 – 啥是Html代码? – 怎么Html代码中定位到我要的东西?...怎么Html代码中定位到我要的东西 标签 上一节中提到,html代码中都是"xxxx"结构,一对””我们称之为标签,这对标签中通常会有一些内容,可能是一个数字,一段字符串...代码,明确要爬取的内容的所在位置,明确换页规律,明确爬虫的起止位置(获取尾页信息的html位置),然后构造代码。...= BeautifulSoup(html0) # 获取尾页(对照前一小节获取尾页的内容看你就明白了) total_page = int(soup0.find("div",class_= "pagers...目录 Python新手写出漂亮的爬虫代码1 啥是Html代码 怎么Html代码中定位到我要的东西 标签 BeautifulSoup神器 案例爱卡汽车 目录 发布者:全栈程序员栈长,转载请注明出处

    1.6K20

    UIWebView 浏览器控件一、初始化与三种加载方式二、常用属性和方法三、代理方法 UIWebViewDelegate四、其它案例:

    文件读取为字符串,其中baseURL是我们自己设置的一个路径,用于寻找html文件中引用的图片等素材。...UIWebView可以缩放HTML页面来适配其视口大小,从而达到整屏显示内容的效果,并且用户可以用捏合动作来放大或缩小页面来查看内容。...默认情况下UIWebView加载HTML页面后,会以页面的原始大小进行显示,亦即如果页面的大小超出UIWebView视口大小,UIWebView会出现滚动效果,而且用户只能通过滚动页面来查看不同区域的内容...枚举: UIWebPaginationModeUnpaginated //不使用翻页效果 UIWebPaginationModeLeftToRight //将网页超出部分分页,左向右进行翻页...NSString *result = [webView stringByEvaluatingJavaScriptFromString:js]; NSLog(@"%@",result); // 结果 : 20 字符串类型

    1.5K60

    IOS开发系列——UIWebView专题【整理,部分原创】

    load html string典型的应用是:url所对应的web page内容太多,如果只需要部分的html content,那么可以通过http request获取url的html content,...自己生成的html,有时无法避免要使用local css, js or image(当然你也可以使用url来链接到网上的css/js/image)。...project里创建js或者把js添加进来后,by default .js文件默认会被当作代码被compiled(你在build project时就会看到warning),因此你需要将.js files“...compile sources” move to "Copy bundle resources",见下图 1.1.2UIWebView加载本地html文件 UIWebView *webView_...iOS默认的UserAgent,可以很巧妙地创建一个空的UIWebView获取: NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString

    92140

    iOS学习巩固笔记-UIWebViewJavaScript

    html、htm、pdf、doc、ppt、txt、mp4等 1.1 UIWebView常用的加载资源的方法 - (void)loadRequest:(NSURLRequest *)request; 1.2...手机上面的safai其实就是用webView来实现的  现在的开发并不完全是原生的开发,而更加倾向于原生+Html5的方式  webView是OC代码和html代码之间进行交互的桥梁 3.1.1 代码...OC里面有通过字符串生成SEL类型的方法,所以当拿到数据之后做下面的事情 截取方法的名称 将截取出来的字符串转换为SEL 利用performSelect方法来调用SEL 涉及到的相关方法 //判断字符串是否以一个固定的字符开头...1761237846"; NSString *context = @"玩游戏"; NSString *status = @"上课的时候"; //注意: //1.自定义的参数索引2...} void UncaughtExceptionHandler(NSException *exception) { //获取异常崩溃信息 NSArray *callStack

    1.2K70

    【IOS开发基础系列】UIWebView专题

    load html string 典型的应用是:url所对应的web page内容太多,如果只需要部分的html content,那么可以通过http request获取url的html content...自己生成的html,有时无法避免要使用local css, js or image (当然你也可以使用url来链接到网上的css/js/image)。         ...project里创建js或者把js添加进来后,by default .js文件默认会被当作代码被compiled (你在build project时就会看到warning),因此你需要将.js files“...iOS默认的UserAgent,可以很巧妙地创建一个空的UIWebView获取: NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString...常见问题 3.2.1 webView不在最上层时无法接受到原生发给js的处理逻辑     问题:        如果WebView不在最上层,即失去了焦点,则WebView无法接受到原生发给js端的指令

    34230

    iOS下JS与OC互相调用(一)--UIWebView 拦截URL

    UIWebView 拦截URL 我之前就使用的是UIWebView + 拦截URL 的方式实现的JS与OC 交互。 原因是因为要兼容iOS 6。 1.创建UIWebView,并加载本地HTML。...加载本地HTML的目的是便于自己写JS调用做测试,最终肯定还是加载网络HTML。...title=测试分享的标题&content=测试分享的内容&url=http://www.baidu.com"); } 那么如果获取到这些参数呢?...所有的参数都在URL的query中,先通过&将字符串拆分,在通过=把参数拆分成key 和实际的值。...OC调用JS方法 关于将OC 执行结果返回给JS 需要注意的是: 如果回调执行的JS 方法带参数,而参数不是字符串时,不要加单引号,否则可能导致调用JS 方法失败。

    3.6K40

    iOS中UIWebView的使用详解 原

    iOS中UIWebView的使用详解 一、初始化与三种加载方式      UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种...第二种: - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL; 这个方法需要将httml文件读取为字符串,其中baseURL...是我们自己设置的一个路径,用于寻找html文件中引用的图片等素材。...UIWebPaginationMode) {     UIWebPaginationModeUnpaginated,//不使用翻页效果     UIWebPaginationModeLeftToRight,//将网页超出部分分页,左向右进行翻页...    UIWebPaginationModeBottomToTop,//将网页超出部分分页,从下向上进行翻页     UIWebPaginationModeRightToLeft//将网页超出部分分页,右向左进行翻页

    76520
    领券