使用Objective-C解析HTML的Hpple
我已经遵循了从到解析HTML节点的教程 我从使用Objective-C解析HTML的Hpple,html,ios,objective-c,xpath,hpple,Html,Ios,Objective C,Xpath,Hpple,我已经遵循了从到解析HTML节点的教程 我从index.html获取内容。 我尝试使用此方法获取背景值 + (void)parseWithHTMLString:(NSString *)string { NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; TFHpple *parser = [TFHpple hppleWithData:data isXML:NO]; NSString *XpathQueryS
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);
}
}
所以问题是:
我做错了什么?您的代码中有两个小错误
类前面缺少一个@
background
键是一个属性,因此您需要向TFHppleElement
询问其属性(这是一个字典),并通过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
背景:#f2f2
背景:#D9A577
背景:#BF8969
背景:#04000D
它做什么?你期望它做什么?当你运行你的代码时,你得到了什么?如果我们不知道出了什么问题,我们就帮不了你。我猜您使用了错误的xpath,但由于您没有向我们显示html代码,我们无法在这方面帮助您。您是否尝试过
model.colorString=[element.attributes objectForKey:@“style”]代码>@已立即尝试,没有任何内容。我打印nodes
变量,控制台返回nodes给我的值是nil
。也许这是个问题。