Objective-Cについての質問です。HTML全体を取得して正規表現を使用するプログラムを作成しました。プログラムを GitHub にアップロードしました。ただし、例外が発生します。
このプログラムの目的は、正規表現一致によって「og:image」を取得することです。FacebookでURLを書いて表示される画像です。この画像を設定するには、HTML で次のように記述します。
<meta property="og:image"
content="http://business.nikkeibp.co.jp/article/NBD/20120727/235043/zu1.jpg">
そこで、HTML全体を取得してog:image部分を見つけるプログラムを書きました。コードは以下のとおりです。
// Web page address
NSURL *url = [NSURL URLWithString:textField.text];
// Get the web page HTML
NSString *string =
[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
// prepare regular expression to find text
NSError *error = nil;
NSRegularExpression *regexp =
[NSRegularExpression regularExpressionWithPattern:
@"<meta property=\"og:image\" content=\".+\""
options:0
error:&error];
@try {
// find by regular expression
NSTextCheckingResult *match =
[regexp firstMatchInString:string options:0 range:NSMakeRange(0, string.length)];
// get the first result
NSRange resultRange = [match rangeAtIndex:0];
NSLog(@"match=%@", [string substringWithRange:resultRange]);
if (match) {
// get the og:image URL from the find result
NSRange urlRange = NSMakeRange(resultRange.location + 35, resultRange.length - 35 - 1);
NSURL *urlOgImage = [NSURL URLWithString:[string substringWithRange:urlRange]];
imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:urlOgImage]];
}
}
コード全体は、以下のように GitHub にあります。
https://github.com/weed/p120728_GetOgImage/blob/master/GetOgImage/ViewController.m
ただし、このプログラムは例外を介して実行されることがあります。
成功事例:<a href="http://www.nicovideo.jp/watch/1343369790" rel="nofollow">http://www.nicovideo.jp/watch/1343369790
失敗例:<a href="http://business.nikkeibp.co.jp/article/NBD/20120727/235043/?ST=pc" rel="nofollow">http://business.nikkeibp.co.jp /article/NBD/20120727/235043/?ST=pc
スクリーンショットはこちら: https://github.com/weed/p120728_GetOgImage/blob/master/readme.md
なぜ例外が発生するのですか?教えて下さい。ご協力ありがとうございました。