Hpple使用Objective-CparsingHTML
我遵循RayWendErlich的教程来parsingHTML节点。
我从index.html
获取内容。 我试图用这个方法来获取背景值。
+ (void)parseWithHTMLString:(NSString *)string { NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; TFHpple *parser = [TFHpple hppleWithData:data isXML:NO]; NSString *XpathQueryString = @"//div[class='content']/div/div"; NSArray *nodes = [parser searchWithXPathQuery:XpathQueryString]; NSLog(@"%@",nodes); NSMutableArray *resultArray = [[NSMutableArray alloc] initWithCapacity:0]; for (TFHppleElement *element in nodes) { Model *model = [[Model alloc] init]; model.colorString = [element objectForKey:@"style"]; [resultArray addObject:model]; //NSLog(@"%@",model.colorString); } }
所以问题是:
我做错了什么?
在你的代码中有2个小错误。
- 您使用的xPath不正确。 你在
class
错过了@
-
background
键是一个属性,所以你需要问TFHppleElement
的attributes
属性(这是一个字典),并通过objectForKey:
获取它的值。
这是最终的代码:
NSArray *nodes = [parser searchWithXPathQuery:@"//div[@class='content']/div/div"]; for (TFHppleElement *element in nodes) { NSLog(@"%@",[element.attributes objectForKey:@"style"]); }
控制台输出是:
背景:#D93D59
背景:#E7923D
背景:#768479
背景:#EBBA95
背景:#E26967
背景:#BF343F
背景:#254159
背景:#F2F2F2
背景:#D9A577
背景:#BF8969
背景:#04000D
…