[英]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.