Hpple-iOS解析HTML-hpple读取html文件内容的代码 更新了下拉刷新功能
2013-01-15 18:07
806 查看
https://github.com/topfunky/hpple
其实我写的不多,也就是汇集一些开源代码,然后实现了一下功能,搜索水区标题,下拉刷新。
代码不好看,大家多批评。
下拉刷新用到了EGOTableViewPullRefresh ,论坛里面有下载
这里用到了一个开源的框架hpple,https://github.com/topfunky/hpple,很轻便,能读取html和xml数据,在用到一点xPath知识就可以了。
先下载hpple
然后在你得工程里面导入libxml2
具体步骤看截图,
在Header Search Path中加入${SDKROOT}/usr/include/libxml2
在Other Linker Flag中加入-lxml2
已截取cocoachina为例子主要代码如下
#define WebSite @"http://www.cocoachina.com/bbs/simple/?f5.html"
//NSStringEncoding encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//NSData *siteData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:WebSite]] dataUsingEncoding:encode];
NSData*siteData = [[NSDataalloc] initWithContentsOfURL:[NSURLURLWithString:WebSite]];
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:siteData];
//NSArray *elements = [xpathParser search:@"//a[@class='subject']"];
NSArray*elements = [xpathParser search:@"//ul[@type='1']/li[position()<9]/a"];
//TFHppleElement *element = [elements objectAtIndex:3];
NSMutableArray*arr = [[NSMutableArrayalloc] init];
for (TFHppleElement *element in elements) {
NSString *strs = [element content];
NSLog(@"cc: %@", strs);
[arr addObject:strs];
NSLog(@"arr: %@", arr);
}
self.listData = arr;
NSLog(@"listData: %@", listData);
[arr release];
[xpathParser release];
需要注意的是,网上的例子大多是用到NSData*siteData = [[NSStringstringWithContentsOfURL:[NSURLURLWithString:WebSite]] dataUsingEncoding: ];
这么写中文会出现乱码,不管你编码用bgk还是utf8都是乱码。
改成 NSData*siteData = [[NSDataalloc] initWithContentsOfURL:[NSURLURLWithString:WebSite]];就不会有乱码了。
具体为什么我也搞不动,请高手指点指点。
"//ul[@type='1']/li[position()<9]/a" 这个里面是xPath,可以参照xPath语法察看。
资源:
hpple下载 https://github.com/topfunky/hpple
xPath教程 http://www.w3school.com.cn/xpath/xpath_syntax.asp
外国网站的关于hpple的教程 http://blog.objectgraph.com/index.php/2010/02/24/parsing-html-iphone-development/
我做的一个demo
CocoaChina.zip (61 K) 下载次数:1129
hpple读取html文件内容的代码 更新了下拉刷新功能 (在iOS代码库中浏览本帖)
让技术开发讨论更纯粹!CocoaChina问答荣誉每周、每月龙虎榜!其实我写的不多,也就是汇集一些开源代码,然后实现了一下功能,搜索水区标题,下拉刷新。
代码不好看,大家多批评。
下拉刷新用到了EGOTableViewPullRefresh ,论坛里面有下载
这里用到了一个开源的框架hpple,https://github.com/topfunky/hpple,很轻便,能读取html和xml数据,在用到一点xPath知识就可以了。
先下载hpple
然后在你得工程里面导入libxml2
具体步骤看截图,
在Header Search Path中加入${SDKROOT}/usr/include/libxml2
在Other Linker Flag中加入-lxml2
已截取cocoachina为例子主要代码如下
#define WebSite @"http://www.cocoachina.com/bbs/simple/?f5.html"
//NSStringEncoding encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//NSData *siteData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:WebSite]] dataUsingEncoding:encode];
NSData*siteData = [[NSDataalloc] initWithContentsOfURL:[NSURLURLWithString:WebSite]];
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:siteData];
//NSArray *elements = [xpathParser search:@"//a[@class='subject']"];
NSArray*elements = [xpathParser search:@"//ul[@type='1']/li[position()<9]/a"];
//TFHppleElement *element = [elements objectAtIndex:3];
NSMutableArray*arr = [[NSMutableArrayalloc] init];
for (TFHppleElement *element in elements) {
NSString *strs = [element content];
NSLog(@"cc: %@", strs);
[arr addObject:strs];
NSLog(@"arr: %@", arr);
}
self.listData = arr;
NSLog(@"listData: %@", listData);
[arr release];
[xpathParser release];
需要注意的是,网上的例子大多是用到NSData*siteData = [[NSStringstringWithContentsOfURL:[NSURLURLWithString:WebSite]] dataUsingEncoding: ];
这么写中文会出现乱码,不管你编码用bgk还是utf8都是乱码。
改成 NSData*siteData = [[NSDataalloc] initWithContentsOfURL:[NSURLURLWithString:WebSite]];就不会有乱码了。
具体为什么我也搞不动,请高手指点指点。
"//ul[@type='1']/li[position()<9]/a" 这个里面是xPath,可以参照xPath语法察看。
资源:
hpple下载 https://github.com/topfunky/hpple
xPath教程 http://www.w3school.com.cn/xpath/xpath_syntax.asp
外国网站的关于hpple的教程 http://blog.objectgraph.com/index.php/2010/02/24/parsing-html-iphone-development/
我做的一个demo
CocoaChina.zip (61 K) 下载次数:1129
相关文章推荐
- iOS开发代码:从文本文件中读取内容到字符串里(+ .json文件)
- iOS开发之 Xcode svn更新代码后,不能打开.xcodeproj,因为该项目文件不能被解析
- React 如何解析从后台读取的内容是html格式代码(带样式)
- IOS本地读取HTML文件内容 适合新手试试
- 使用js实现读取csv文件内容解析到html页面中
- PHP读取txt文件的内容并赋值给数组的代码
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例
- dom4j解析xml文件,添加新节点,添加节点内容,读取文件中节点内容作为新增节点内容
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- FFMPEG开发中的常用功能代码①BMP文件的读取、转正并写入AVFrame的data
- Asp.Net 读取xml文件中Key的值,并且过滤掉注释内容代码
- 【代码笔记】iOS-json文件的两种解析方式
- PHP读取文件内容后清空文件示例代码
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- [置顶] 【python PDF解析】python 读取PDF文件内容
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- php逐行读取.txt文件内容,并解析每行内容
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能