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个小错误。

  1. 您使用的xPath不正确。 你在class错过了@
  2. background键是一个属性,所以你需要问TFHppleElementattributes属性(这是一个字典),并通过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

    Interesting Posts