为什么80%的码农都做不了架构师?>>>   

1、第一种获取方式 :通过过stringWithContentsOfURL获取  NSString *urlstring= [NSString stringWithFormat:@"http://baidu.com/=%@",string1];// 此处网址不对,只是示意可以生成一个动态的urlstring  //抓取网页中 网释义内容  NSString * encodedString1 = (NSString *)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)urlstring, NULL, NULL,  kCFStringEncodingUTF8 );  NSURL *url1 = [NSURL URLWithString:encodedString1];  NSString *retStr = [NSString stringWithContentsOfURL:url1 encoding:NSUTF8StringEncoding error:nil];//[[NSString alloc] initWithData:data encoding:];  NSLog(@" html = %@",retStr);  上述方式获取的内容时有一个弊端,当网络不是太好时,会阻塞在stringWithContentsOfURL这里,导致程序假死,(可以通过创建一个线程的方式,来获取数据,这样不好阻塞主线程),或者你可以使用第二种方式:  2、第二种方式:通过NSURLConnection获取//获取指定网页的内容  NSString *urlString= [NSStringstringWithFormat:@"http://baidu.com"];  NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString,NULL, NULL, kCFStringEncodingUTF8 );  NSURL *url =[NSURLURLWithString:encodedString];  NSMutableURLRequest *req=[[NSMutableURLRequestalloc]   initWithURL:url   cachePolicy:NSURLRequestReloadIgnoringLocalCacheData   timeoutInterval:30.0];  receivedData=[[NSMutableDataalloc] initWithData:nil];//接受数据  [req setHTTPMethod: @"POST"];  NSURLConnection *connection = [[NSURLConnectionalloc] initWithRequest:req delegate:self startImmediately:YES];  [req release];  [connection release];  在委托方法中接受数据,这种方式是异步的,不会阻塞当前线程,获取数据时,你可以做别的事情
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{ //简单错误处理  UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"出错了"message:@"网络链接异常" delegate:nilcancelButtonTitle:@"OK" otherButtonTitles:nil];  [alert show];  [alert release];
}  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{  [receivedData setLength:0];//置空数据  }  //接收NSData数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{  [receivedData appendData:data];
}  //接收完毕,显示结果
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{  [connection cancel];  NSString *results = [[NSStringalloc]   initWithBytes:[receivedDatabytes]   length:[receivedDatalength]   encoding:NSUTF8StringEncoding];// 注意数据编码方式,选中正确的编码方式,防止乱码  [selfloadingNetDescription:results];  [results release];
//    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"数据" message:@"下载完成" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
//    [alert show];
//    [alert release];
//    NSLog(@"%@",results);
}     其实还有一种曲折的方式来获取url对应的网页内容,就是通过webView加载对应url,  [mWebViewloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:encodedString]]];
在其委托方法:
webViewDidFinishLoad中通过js来获取相应的网页内容;
例如:NSString *allHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
更具体的可以参考:stringByEvaluatingJavaScriptFromString这个函数的用法  通过上面的方式获取到html数据后,就可以通过字符串的一些处理函数来获取自己像要的内容(当然你也可以用一些xml解析库来进行解析,此处,只简单介绍一下字符串的处理):
简单实例://获取两个body之间的内容:htmlString为上面获取的html字符串  NSRange range1 = [htmlString rangeOfString:@"<body>"];// 返回的location是<body>在htmlString中的起始位置,使用是注意  NSRange range2 = [htmlString rangeOfString:@"</body>"];
if(range3.location !=NSNotFound && range3.length!=0)//简单的判断,不全,使用时注意补全  {  NSString* bodyString= [retStr substringWithRange:NSMakeRange(range1.location, range2.location-range1.location+range2.length)];
NSLog(@"%@"bodyString);
}  补充一些字符串常用处理函数:
1、替换字符串  //将数据中的“回车换行”换成网页中的回车符<br/>  NSString *localString= [descriptionOne stringByReplacingOccurrencesOfString:@"\r\n" withString:@"<br/>"];  //从字符串开头一直截取到指定位置,但不包括该位置的字符
//            NSString *first =[string1 substringToIndex:range.location-1] ;
//            //从指定位置开始获取之后的所有字符(包括指定位置的字符)
//            NSString *last = [string1 substringFromIndex:range.location+1];
//            //按照所给位置,长度,任意的从字符串中截取子串
//            NSString *word  = [string1 substringWithRange:NSMakeRange(range.location-1, 1)];  

转载于:https://my.oschina.net/huqiji/blog/809642

通过url,获取html内容,并解析相关推荐

  1. 通过url,获取html内容,并解析,如何使用 JavaScript 解析 URL

    在 Web 开发中,有许多情况需要解析 URL,这篇主要学习如何使用 URL 对象实现这一点. 开始 创建一个以下内容的 HTML 文件,并在浏览器中打开. JavaScript URL parsin ...

  2. JAVA 通过URL 获取页面内容

    package com.example;import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...

  3. wps解析json数据_通过WordPress HTTP API 获取json内容并解析

    WordPress 4.0的一个亮点就是JSON API的加入,今天我们提前来看看怎么获取JSON的内容并显示出来.过程就是用PHP获取远程JSON的内容,然后把获取到的JSON转化为PHP对象,然后 ...

  4. 网络获取json数据并解析

    1.升级流程分析 2.Android通过URL获取网络资源 JSONObject来解析Json字符串 //创建URL对象//本机地址用localhost, 但是如果用模拟器加载本机的地址时,可以用ip ...

  5. php获取url文件大小,PHP通过URL获取文件大小

    function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url['host'],empty($url['por ...

  6. php获取页面输出内容,PHP CURL获取页面内容输出例子

    使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出.这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true. 1.curl ...

  7. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  8. JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]...

    Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL. 语法: location.[属性|方法] location对象属性图示: location 对象属性: lo ...

  9. Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)

    获取 URL响应头的日期信息 以下实例演示了如何使用 HttpURLConnection 的 httpCon.getDate() 方法来获取 URL响应头的日期信息: import java.net. ...

最新文章

  1. SAMBA的一些特殊设置
  2. 导出txt文件宏_利用solidwords二次开发导出三维曲面方阵点坐标方法
  3. python常见错误-Python 常见报错类型
  4. IOS开发-地图 (mapkit)实验
  5. django 快速实现注册
  6. 前后端交互中,返回前端的自定义响应数据结构
  7. 富士 FinePix F401
  8. python3环境运行python2代码_使用Anaconda实现Python2和Python3共存及相互转换
  9. 用python统计图片中的点_用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)...
  10. 记录一次OOM排查经历
  11. 一个站点存在多个web.config时如何管理?
  12. cn.cw.gps.domain.VisitReport.setVisitID([Ljava.lang.String;)]
  13. (DT系列四)驱动加载中, 如何取得device tree中的属性
  14. c语言 malloc前的括号,20. 有效的括号(LeetCode)——C语言及JS实现
  15. wsdl2java参数_wsdl2java参数解释
  16. python自动交易软件排名_量化投资软件排名 哪个量化交易软件最好用
  17. Mac 常用的 20 款效率神器推荐
  18. 数据采集卡的模拟输入信号到底应该怎么接线
  19. 【chm】Python提取chm数据
  20. UCenter+云市场?开源用户中心2.0时代即将开启

热门文章

  1. Microsoft Teams快速上手系列-08Teams中的内部防火墙
  2. restful接口定义的几种方式
  3. 允许root远程登录Solaris
  4. 架构高性能网站秘笈(一)——了解衡量网站性能的指标
  5. 对HA的简单认识以及HA集群删除
  6. 软考中项学习之路--在路上
  7. 《你的灯亮着吗》读书笔记3
  8. configure: error: mcrypt.h not found. Please reins
  9. Linux中命令配置防火墙
  10. Oracle修改监听IP地址