簡體   English   中英

嘗試從HTML中提取表格數據

[英]Trying to pull tabledata out from html

基本上我需要從這個html文件中解析td(表數據)。我需要獲取正確的xpath。我使用raywenderlich作為此任務的模型,這是到目前為止的代碼。

  NSURL *tutorialsUrl = [NSURL URLWithString:@"http://example.com/events];
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl];

// 2
TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData];

// 3

NSString *tutorialsXpathQueryString = @"This is where I need to enter my xpath to rerieve the table data";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];

感謝firebug,我有了此元素的html路徑,我將在下面發布。

  /<html lang="en">/<body>/div id="page" class="container">/<div class="span-19">/<div id="content">/<div>/<table id=yw0 class="detail-view">/<tbody>/<tr class="even">/<td>moo</td>/

我需要對文本moo進行解析。 任何幫助將不勝感激。

這也是我從螢火蟲獲得的x路徑,但它根本沒有用。

    /html/body/div/div[4]/div/div/table/tbody/tr[2]/td

首先,您需要獲取子字符串,其中每個子字符串包含一個需要提取的元素:

    NSArray *split = [text componentsSeparatedByString:@"<td>"];

在數組“ split”中,第一個對象不包含任何所需內容,因此不再使用它。 現在,對於此數組中的每個子字符串(第一個字符串除外),您都需要使用“ / td”標簽搜索子字符串:

    NSRange range = [string rangeOfString:@"</td>"];

然后將其及其背后的所有內容刪除:

    - (NSString *)substringToIndex:(NSUInteger)anIndex //you will get index by searching for "</td>" as mentioned

編輯:

另一種可能性是甚至對提到的標記使用componentsSeparatedByString代替第二和第三步,並且在每個數組的第一項中,您將需要文本。

EDIT2 :(完整代碼)

    NSString* originalText = @"  /<html lang=""en"">/<body>/div id=""page"" class=""container"">/<div class=""span-19"">/<div id=""content"">/<div>/<table id=yw0 class=""detail-view"">/<tbody>/<tr class=""even"">/<td>moo1</td><td>moo2</td>/";
    NSArray* separatedParts = [originalText componentsSeparatedByString:@"<td>"];
    NSMutableArray* arrayOfResults = [[NSMutableArray alloc] init];
    for (int i = 1; i < separatedParts.count; i++) {
           NSRange range = [[separatedParts objectAtIndex:i] rangeOfString:@"</td>"];
           NSString *partialResult = [[separatedParts objectAtIndex:i] substringToIndex:range.location];        
           [arrayOfResults addObject:partialResult];
    }

我對原始文本進行了一些改動,以表明它確實適用於包含更多項的表格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM