1. 程式人生 > >iOS 通過url獲取網頁文字內容

iOS 通過url獲取網頁文字內容

    今天突然有一個需求, 第二個頁面要顯示一個網頁,第一個頁面要顯示圖片標題或者簡介等內容,但是!後臺僅僅返回了一個URL!這就意味著我必須在第一個頁面自己通過URL拿到網頁內部我需要的內容.這裡就不詳細說怎麼拿到title或者圖片之類的了,我的需求是拿到文章內容的文字部分拿來顯示三排就夠了:

①拿到網頁內容,很簡單一句程式碼

NSString *htmlString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"你的完整URL"] encoding:NSUTF8StringEncoding error:nil];

②正則去除網路標籤,一個方法

- (NSString *)getZZwithString:(NSString *)string{
    NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"<[^>]*>|\n" options:0 error:nil];
    string = [regularExpretion stringByReplacingMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length) withTemplate:@""];
    return string;
}

③最後 

NSString *contentStr = [self getZZwithString:htmlString];

contentStr就是我要用於顯示的文字了.此方法拿到的文字是url對應網頁的文字,所以根據需求自由擷取長短.

總結:以上主要是在不需要載入網頁的情況下使用的,方便快捷.如果本頁面本來就有webView,那就可以通過js程式碼來獲取相應的內容:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

UIWebView *web = webView;

//獲取所有的html

NSString *allHtml = @"document.documentElement.innerHTML";

//獲取網頁title

NSString *htmlTitle = @"document.title";

//獲取網頁的一個值

NSString *htmlNum = @"document.getElementById('title').innerText";

//獲取到得網頁內容

NSString *allHtmlInfo = [web stringByEvaluatingJavaScriptFromString:allHtml];

NSLog(@"%@",allHtmlInfo);

NSString *titleHtmlInfo = [web stringByEvaluatingJavaScriptFromString:htmlTitle];

NSLog(@"%@",titleHtmlInfo);

NSString *numHtmlInfo = [web stringByEvaluatingJavaScriptFromString:htmlNum];

NSLog(@"%@",numHtmlInfo);

}

此處引用
流浪在簡書
的文章