获取html代码中的正文部分

39 篇文章 0 订阅

用WebView 加载出来后获取

这是楼主在开发中遇到的问题
从后台获取到一段html代码
[[HTTPSessionManager httpManager] getWithURL:FIND_DOCTOR_OR_PATIENT_ARTICLELIST params:parameters success:^(id json) {
        NSMutableArray *arr = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableContainers | NSJSONReadingAllowFragments error:nil];
        XMGLog(@"%lu",(unsigned long)arr.count);

//        for (id key in [arr[0][@"data"] allKeys]) {
//            XMGLog(@"%@=%@",key,arr[0][@"data"][key]);
//        }

        //baseURL可以为空,但baseURL为空是时,有些图片在webView不显示
        [weakSelf.webView loadHTMLString:arr[0][@"data"][@"context"]() baseURL:[NSURL URLWithString:FIND_DOCTOR_OR_PATIENT_ARTICLELIST]];


    } failure:^(NSError *error) {
        XMGLog(@"%@",error);
    }];
//webView代理方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    //有时候图片可能会过大,此处设置让图片完整显示
    NSString *str = @"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '100%'";
    [_webView stringByEvaluatingJavaScriptFromString:str];

    //获取webView中的内容文字
    self.label.text = [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText"];

    //这里是js,主要目的实现对webView中图片url的获取
    static  NSString * const jsGetImages =
    @"function getImages(){\
    var objs = document.getElementsByTagName(\"img\");\
    var imgScr = '';\
    for(var i=0;i<objs.length;i++){\
    imgScr = imgScr + objs[i].src + '+';\
    };\
    return imgScr;\
    };";

    [webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法
    //得到图片url拼接后的字符串  每个图片URL用"+"隔开
    NSString *urlResurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];

    self.label.text = urlResurlt;

}

利用富文本获取

//用富文本将html代码中的正文提取出来,只能获取字符串
        NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[healthNews.context dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
        if (attrStr.length >=70) {
            //截取前面70个字符
            [attrStr deleteCharactersInRange:NSMakeRange(70, attrStr.length-70)];
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值