平时得到的后台API基本都是JSON格式,可以直接用JSONModel来解析数据,方便调用。但是,有时候得到API是Html格式的,这就需要我们自己来解析,然后对它进行相关的处理。
用到的是第三方的解析,TFHpple来解析html。
1 引入静态库文件
在https://github.com/topfunky/hpple 上下载工程,然后将下面几个文件加入工程中。TFHpple.h,TFHpple.m,TFHppleElement.h,TFHppleElement.m,XPathQuery.h,XPathQuery.m
然后在Frameworks中导入libxml2.dylib
在 targets中,在build settings搜索Header Search Paths,将debug和release设置不同的值;
debug的值设置成:/usr/include/libxml2
release的值设置成:${SDKROOT}/usr/include/libxml2
2 工程中解析html
(1) 将网页转换成NSData
(2)按照标签值在NSData中数据进行查询
(3)检索出想要的数据
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"];
主要是分清楚节点,节点属性,节点属性值,节点内容,然后对其中的内容进行处理就可以了。