【问题标题】:Grabbing the first child of a <tr> tag?获取 <tr> 标签的第一个子元素?
【发布时间】:2013-04-29 19:14:03
【问题描述】:

目前我正在关注 Ray Wenderlich 的 tutorial 处理在 ios 上解析 html。一切都根据这棵树完美地解释了:


(来源:raywenderlich.com

他们为每个教程提取标题和 url 标签。

这就是他们创建一个数组来保存他们的教程对象的方式:

NSMutableArray *newTutorials = [[NSMutableArray alloc] initWithCapacity:0];
    for (TFHppleElement *element in tutorialsNodes) {
        // 5
        Tutorial *tutorial = [[Tutorial alloc] init];
        [newTutorials addObject:tutorial];

        // 6
        tutorial.title = [[element firstChild] content];

        // 7
        tutorial.url = [element objectForKey:@"href"];
    }

现在这是我的问题。我目前正在我的网站上尝试这个。问题是我不知道如何获取每个&lt;tr&gt; 标签的第四个孩子。

这是我的 html 树。

我试图只从每个标签中获取第四个孩子。但我不知道如何处理它。

这是正确的吗?

        // 6
        tutorial.title = [[element firstChild] content];

        // 7
        tutorial.amount = [[element fourthChild] objectForKey:@"td"];

【问题讨论】:

    标签: ios nsmutablearray html-parsing web-scraping hpple


    【解决方案1】:

    您可以使用 children 属性来这样做:)

    首先,您需要访问所需的标签以获取所有元素子元素。为此,您可以像这样设置 xpath 查询:div[@id='main']/table[@class='bodytext']/tbody/tr

    然后您可以使用 children 属性获取第四个孩子。这是示例代码。

    //3
    NSString *tutorialsXpathQueryString = @"//div[@id='main']/table[@class='bodytext']/tbody/tr";
    NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
    
    // 4
    NSMutableArray *newTutorials = [[NSMutableArray alloc] initWithCapacity:0];
    for (TFHppleElement *element in tutorialsNodes) {
    // 5
    Tutorial *tutorial = [[Tutorial alloc] init];
    [newTutorials addObject:tutorial];
    
    // 6
    TFHppleElement *trTag = [[element children] objectAtIndex:3];
    
    tutorial.title = [trTag content];
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2016-10-30
      • 2012-05-15
      • 2011-08-03
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多