我正在尝试解析this page。 NSLog给了我奇怪的结果:
Aktualne kursy walut - Alior Bank
if( window.opera ) {
if ('fast' == history.navigationMode) {
history.navigationMode = 'automatic';
location.reload();
} else {
history.navigationMode = 'fast';
}
}
它可以是什么?是解析此页面的正确方法吗?我的工作代码:
NSError * error = nil;
HTMLParser * parser = [[HTMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.aliorbank.pl/pl/o_banku/kursy_walut/kursy_walut_aktualne/main"] error:&error];
if (error) {
NSLog(@"Error: %@", error);
parser = nil;
return 0;
}
HTMLNode * bodyNode = [parser doc];
NSLog(@"parser = %@", [bodyNode allContents]);
修改 我想用汇率值解析表格。但是当我尝试用类“currencyTable”搜索一个表时,我什么都没得到。我的代码:
HTMLNode * bodyNode = [parser doc];
HTMLNode *myNode = [bodyNode findChildOfClass:@"currencyTable"];
NSLog(@"table = %@", [myNode allContents]);
NSLog给了我“table =”。我怎样才能拿到这张桌子?
答案 0 :(得分:1)
我查看了来源
view-source:http://www.aliorbank.pl/pl/o_banku/kursy_walut/kursy_walut_aktualne/main
(在Chrome中打开)
该文件的似乎只是在标签之间返回信息。
例如,标题标记为:
<title>Aktualne kursy walut - Alior Bank</title>
您的回复的第一部分是:
Aktualne kursy walut - Alior Bank
标签之间包含任何文本的html源代码的下一部分是:
<script>
if( window.opera ) {
if ('fast' == history.navigationMode) {
history.navigationMode = 'automatic';
location.reload();
} else {
history.navigationMode = 'fast';
}
}
</script>
同样,它返回这些标记之间的文本:
if( window.opera ) {
if ('fast' == history.navigationMode) {
history.navigationMode = 'automatic';
location.reload();
} else {
history.navigationMode = 'fast';
}
}
我不知道这是一个“奇怪”的结果。总的来说,我想我必须要问,你在期待什么?
看过文档中的示例,我会这样试试:
NSError * error = nil;
HTMLParser * parser = [[HTMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.aliorbank.pl/pl/o_banku/kursy_walut/kursy_walut_aktualne/main"] error:&error];
if (error) {
NSLog(@"Error: %@", error);
parser = nil;
return 0;
}
HTMLNode * bodyNode = [parser body];
NSArray *tableNodes = [bodyNode findChildTags:@"input"];
HTMLNode *tableToParse = nil;
for (HTMLNode *tableNode in tableNodes)
{
if ([[tableNode getAttributeNamed:@"class"] isEqualToString:@"currencyTable"])
{
tableToParse = tableNode;
break;
}
}
//Proceed to parse this table node in a similar way.
NSLog(@"Table to parse : %@", [tableToParse rawContents]);
请注意,我没有测试过此代码,这只是从文档中编写的。