0

このページを解析しようとしています。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 = " を返します。どうすればこのテーブルを入手できますか?

4

1 に答える 1

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

私はこのコードをテストしていないことに注意してください。これはドキュメントから書かれたものです。

于 2012-06-09T01:02:25.777 に答える