ウェブサイトからいくつかの株式市場データをインポートしましたが、それらを分離するのに問題があります。コードの一部では正常に機能していますが、最終的には機能していません。コードは次のとおりです。
NSURL *url = [NSURL URLWithString:@"http://www.bloomberg.com/quote/USIM5:BZ"];
NSData *webData = [NSData dataWithContentsOfURL:url];
//NSString *xPathQuery = @"//h3[@class=''] |//span[@class=' price'] | //span[@class=' trending_up up'] | //span[@class=' trending_up up']/span | //table[@class='snapshot_table']/tr/th | //table[@class='snapshot_table']/tr/td";
NSString *xPathQuery = @"//span[@class=' price'] | //span[@class=' trending_up up'] | //span[@class=' trending_up up']/span | //table[@class='snapshot_table']/tr/td";
TFHpple *parser = [TFHpple hppleWithData:webData isXML:NO];
NSArray *array = [parser searchWithXPathQuery:xPathQuery];
valores = [[NSMutableArray alloc]init];
for (TFHppleElement *element in array) {
[valores addObject:[[element firstChild] content]];
}
novosValores = [[NSMutableArray alloc]init];
for (NSString *valuesDatum in valores) {
NSString *removeNewLine = [[valuesDatum componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] componentsJoinedByString:@" "];
NSString *removeSpace = [removeNewLine stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *removeSpaceOne = [removeSpace stringByReplacingOccurrencesOfString:@" " withString:@""];
[novosValores addObject:removeSpaceOne];
}
NSLog(@"%@",novosValores);
valoresFinais = [[NSMutableArray alloc]init];
for (NSString *valuesDatum in novosValores) {
NSArray *val = [valuesDatum componentsSeparatedByString:@" - "];
[valoresFinais addObject:val];
}
NSLog(@"%@",valoresFinais);
infos = [[NSMutableArray alloc]init];
for (NSString *dados in valoresFinais) {
NSArray *arrayDados = [dados componentsSeparatedByString:@","];
[infos addObject:arrayDados];
}
NSLog(@"%@", infos);
}
ログは私にこれを示しています:
2013-01-19 12:45:17.526 BloombergQuotes[1720:c07] (
"12.300",
"12.580",
"12.270 - 12.590",
"4,572,600",
"12.460",
"5.570 - 13.770",
"+7.82%"
)
2013-01-19 12:45:17.528 BloombergQuotes[1720:c07] (
(
"12.300"
),
(
"12.580"
),
(
"12.270",
"12.590"
),
(
"4,572,600"
),
(
"12.460"
),
(
"5.570",
"13.770"
),
(
"+7.82%"
)
)
2013-01-19 12:45:17.528 BloombergQuotes[1720:c07] -[__NSArrayI componentsSeparatedByString:]: unrecognized selector sent to instance 0x7434eb0
2013-01-19 12:45:17.529 BloombergQuotes[1720:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI componentsSeparatedByString:]: unrecognized selector sent to instance 0x7434eb0'
*** First throw call stack:
(0x2101012 0x11fae7e 0x218c4bd 0x20f0bbc 0x20f094e 0x2fbe 0x223817 0x223882 0x172a25 0x172dbf 0x172f55 0x17bf67 0x13ffcc 0x140fab 0x152315 0x15324b 0x144cf8 0x205cdf9 0x205cad0 0x2076bf5 0x2076962 0x20a7bb6 0x20a6f44 0x20a6e1b 0x1407da 0x14265c 0x215d 0x2085)
libc++abi.dylib: terminate called throwing an exception
(lldb)
したがって、データの最初のチャンクは、「-」で区切る必要がある3行目と5行目を除いて、必要なものにはほぼ問題ありません。これを実行すると、結果はデータの2番目のチャンクになりますが、3行目と5行目に「、」で接続された値が返されました。それで、私は再び「、」で区切られました、そしてそれはエラーが来るところです。
したがって、必要なのは、データの最初のチャンクの内容がすべて分離されていることです。
どんな助けもいただければ幸いです。
ありがとう!!!