iOS开发之html解析
使用XPath解析html
在项目中找到Header Search Paths,加入/usr/include/libxml2
 NSString *urlString = nil;
 urlString = @"http://www.xiyou.edu.cn/new/lm.jsp?urltype=tree.TreeTempUrl&wbtreeid=724";
 NSData *htmlData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]];
 NSData *toHtmlData = [self toUTF8:htmlData];
 TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:toHtmlData];
 NSArray *aArray = [xpathParser searchWithXPathQuery:@"//a"];
 if ([span count] > ) {
             for (int i = ; i < ; i++) {
                             //从<a>的第82个开始取值,共获取15个值
                 TFHppleElement *aElement = [aArray objectAtIndex:i];
                 NSArray *aArr = [aElement children];
                 TFHppleElement *aEle = [aArr objectAtIndex:];
                 NSArray *aChild = [aEle children];
                 TFHppleElement *aChildEle = [aChild objectAtIndex:];
                 NSArray *aChildren = [aChildEle children];
                 NSString *aStr = [[aChildren objectAtIndex:] content];
                 NSLog(@"aStr:%@",aStr);
                 NSDictionary *aAttributeDict = [aElement attributes];
                 NSLog(@"aAttributeDict:%@",aAttributeDict);
                             //获取a中的属性值
                 NSString *hrefStr = [NSString stringWithFormat:@"http://www.xiyou.edu.cn%@",[aAttributeDict objectForKey:@"href"]];
                 NSLog(@"hrefStr:%@",hrefStr);
                 [currentNewsArr addObject:aStr];
                 [currentHrefArr addObject:hrefStr];
             }
 [htmlData release];
 [xpathParser release];
 }
 //如果解析的网页不是utf8编码,如gbk编码,可以先将其转换为utf8编码再对其进行解析
 -(NSData *) toUTF8:(NSData *)sourceData {
     CFStringRef gbkStr = CFStringCreateWithBytes(NULL, [sourceData bytes], [sourceData length],kCFStringEncodingGB_18030_2000, false);  
     if (gbkStr == NULL) {
         return nil;
     } else {
         NSString *gbkString = (NSString *)gbkStr;
         //根据网页源代码中编码方式进行修改,此处为从gbk转换为utf8
              NSString *utf8_String = [gbkString stringByReplacingOccurrencesOfString:@"META http-equiv="Content-Type" content="text/html; charset=GBK""
                                                                       withString:@"META http-equiv="Content-Type" content="text/html; charset=UTF-""];  
         return [utf8_String dataUsingEncoding:NSUTF8StringEncoding];
     }
 }
http://blog.csdn.net/majiakun1/article/details/39472489
iOS开发之html解析的更多相关文章
- iOS开发之JSON解析
		
JSON解析步骤: - (NSArray *)products { if (_products == nil) { //第一步:获取JSON文件的路径: NSString *path = [[NSBu ...
 - iOS开发之block解析
		
1. block的本质是一个Objective-C的对象,为什么这么说? 在Objective-C中,runtime会在执行时依据对象的isa指针的指向,来度额定这个对象的类型,也能够觉得一个对象,它 ...
 - 李洪强iOS开发之iOS好文章收集
		
李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...
 - iOS开发之MVVM在项目中的应用
		
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
 - iOS开发之Socket通信实战--Request请求数据包编码模块
		
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
 - iOS开发之UISearchBar初探
		
iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...
 - iOS开发之UIImage等比缩放
		
iOS开发之UIImage等比缩放 评论功能真不错 评论开通后,果然有很多人吐槽.谢谢大家的支持和关爱,如果有做的不到的地方,还请海涵.毕竟我一个人的力量是有限的,我会尽自己最大的努力大家准备一些干货 ...
 - iOS开发之  Xcode6 添加xib文件,去掉storyboard的hello world应用
		
iOS开发之 Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理 ...
 - iOS开发之loadView、viewDidLoad及viewDidUnload的关系
		
iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系 标题中所说的3个方 ...
 
随机推荐
- 【转发】Linux中设置服务自启动的三种方式
			
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立/e ...
 - setTimout执行时间
			
在浏览器中,JavaScript引擎是单线程执行的.也就是说,在同一时间内,只能有一段代码被JavaScript引擎执行.页面加载时,JavaScript引擎会顺序执行页面上所有JavaScript代 ...
 - C++ 知识点积累---待整理
 - CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1
			
一.安装前的准备工作 1.yum update #更新系统 2.yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2 ...
 - psd-面试-dp/LCS
			
链接:https://www.nowcoder.com/acm/contest/90/D来源:牛客网 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲公司注册成立于爱 ...
 - Bootstrap 可视化布局--拖拽后弹窗进行编辑
			
Bootstrap 可视化布局--拖拽后弹窗进行编辑 最近后台想一个需求,使用可视化布局-中文 | en中拖拽表格后,弹窗进行编辑,保存下载后在后台生成pdf格式. 奈何各种问题不断,使用 jquer ...
 - watch和computed的用法区别是什么?
			
在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需 ...
 - Spring入门5.事务管理机制
			
Spring入门5.事务管理机制 20131126 代码下载 : 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 回顾之前的知识,Spring 最为核心的两个部分 ...
 - 【lightoj-1024】Eid (高精度)
			
[题意] 给定n个数,求这n个数的最小公倍数. [题解] 最小公倍数当然不能按常规方法来求,因为最大的数将近是10000^1000级别的.然鹅最小公倍数怎么搞呢? 这里发现了一个规律: 4 5 6 3 ...
 - hdu 6038 Function
			
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...