初次解析html,使用是网上的第三方类;我使用的是以下三个类,将其添加到项目中:
- #import?"TFHpple.h"?????????????????????
- #import?"TFHppleElement.h"?
- #import?"XPathQuery.h"?
添加以上三个类必须添加一个库,这个库是:libxml2.2.dylib。并且还需要设置一些路径参数,否则会一直报错;这个路径的设置,在 targets中,在build settings搜索Header Search Paths,将debug和release设置不同的值;
debug的值设置成:/usr/include/libxml2
release的值设置成:${SDKROOT}/usr/include/libxml2
将以上的设置好了以后,就是使用的时候;将#import "TFHpple.h"添加到解析html的类中,再写解析方法;
一般思路如下:
1.首先将网页的html转换成oc能够认识的NSString数据;用到的方法如下:
- NSString?*dataString?=?[NSString?stringWithContentsOfURL:[NSURL?URLWithString:htmlString]?encoding:NSUTF8StringEncoding?error:nil];??//htmlString是html网页的地址?
2.将dataString转换成NSData,给TFHpple类用
- NSData?*htmlData?=?[dataString1?dataUsingEncoding:NSUTF8StringEncoding];?
3.设置html中节点,根据节点取值,例如<p>.....</p>,可以用节点来取值;
如NSString *nodeString = @"//p";
使用htmlData和nodeString,解析自己需要的值:
- TFHpple?*xpathParser?=?[[TFHpple?alloc]?initWithHTMLData:htmlData];?
- NSArray?*elements??=?[xpathParser?searchWithXPathQuery:nodeString];??//这个数组中就有需要的值?
(TFHppleElement中提供很多方法,可以用这些方法获取elements的值,如- (NSArray *) children;)
Demo链接:http://code4app.com/ios/%E8%A7%A3%E6%9E%90HTML/5167ca396803faf447000002