Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Objective-C解析HTML的Hpple_Html_Ios_Objective C_Xpath_Hpple - Fatal编程技术网

使用Objective-C解析HTML的Hpple

使用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

我已经遵循了从到解析HTML节点的教程

我从
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);
  }
}
所以问题是:


我做错了什么?

您的代码中有两个小错误

  • 您使用的xPath不正确。您在
    类前面缺少一个
    @
  • 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
    。也许这是个问题。