抓住标签的第一个孩子?

时间:2013-05-06 04:11:02

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

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

enter image description here

他们为每个教程提取标题和网址标记。

这是他们创建一个数组来保存他们的Tutorial对象的方法:

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"];
    }

现在这是我的问题。我目前正在我的网站上尝试这个。问题是我不知道如何获得每个<tr>标签的第4个孩子。

这是我的html树。

enter image description here

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

这是正确的吗?

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用children属性:)

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

然后你可以让第四个孩子使用儿童财产。这是示例代码。

//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];

希望这有帮助