獲取html代碼中的正文部分

用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)];
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章