2ch の BBS から subject.txt や dat などをダウンロードして遊んでみたのですが、スレ一覧の gzip 取得がうまくいきませんでした。後、ソースが公開されている複数の ‘2ch ブラウザ’ も参考にしました。
日: 2006年10月1日
Search2chBBS
プログラムは単純なものです。Core Data と WebKit を利用しています。WebKit を用いて URL [
http://menu.2ch.net/bbsmenu.html ] から bbsmenu.html ファイルをダウンロードしています。下にソースの一部を記載します。
_webView = [[WebView alloc] initWithFrame:NSZeroRect]; [_webView setFrameLoadDelegate:self]; [_webView setResourceLoadDelegate:self]; preferences = [_webView preferences]; [preferences setDefaultTextEncodingName:@"shift_jis"]; frame = [_webView mainFrame]; url = [NSURL URLWithString:@"http://menu.2ch.net/bbsmenu.html"]; request = [NSURLRequest requestWithURL:url]; [frame loadRequest:request];
それから WebKit を利用して DOM にアクセスしています。下に表示されているのが bbsmneu.html の一部とソースの一部分です。この場合は _category に ‘PC等’、title に ‘PCサロン’ 、url に ‘http://pc7.2ch.net/pc2nanmin/’ などがそれぞれ対応しています。
<BR><BR><B>PC等</B><BR> <A HREF=http://pc7.2ch.net/pc2nanmin/>PCサロン</A><br> <A HREF=http://pc8.2ch.net/pcnews/>PCニュース</A><br> <A HREF=http://pc8.2ch.net/win/>Windows</A><br> <A HREF=http://pc8.2ch.net/jobs/>旧・mac</A><br> <A HREF=http://pc7.2ch.net/mac/>新・mac</A><br>
if ([node hasChildNodes] == YES) { if ([[node nodeName] isEqualToString:@"A"] == YES) { obj = [NSEntityDescription insertNewObjectForEntityForName:@"Board" inManagedObjectContext:[self managedObjectContext]]; [obj setValue:_category forKey:@"category"]; [obj setValue:[[node firstChild] nodeValue] forKey:@"title"]; [obj setValue:[[[node attributes] getNamedItem:@"HREF"] nodeValue] forKey:@"url"]; } else if ([[node nodeName] isEqualToString:@"B"] == YES) { _category = [[node firstChild] nodeValue]; } else { [self nodeHref:[node childNodes]]; }
Search2chBBS
フリーウェア Search2chBBS [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html ] を公開しました。2 ちゃんねるのカテゴリ、掲示板の名前、URL をキーワードで検索するプログラムです。’2 ちゃんねる’ ブラウザではないので、注意してください。(‘2 ちゃんねる’ ブラウザを作る技術は、私にはありません。 )
Google で検索すると 2ch のスレが表示されることがあります。ところが、どのカテゴリに属しているのか判断できません。それで URL の一部をキーワードにして、ダウンロードしてある bbsmenu.html ファイルを検索していました。これは不便なので、自作してみました。本当は私が普段利用している ‘2ch ブラウザ’ BathyScaphe のメニュー ‘掲示板’/’掲示板を追加…’ で URL も検索対象になれば良いのですが!