Rich Site Summary, RDF Site Summary
以下のドキュメントは公開予定でまとめかけていたものです。
しかし今では古いものになっています(2001/12月ぐらいまでのもの)。
新しいドキュメントについては作成中です。
ツール
前書き
- ここでは、レンタルサーバ等でHPを作成しているような一般ユーザがRSSファイルを利用する為の方法を説明します。個人的なポータルサイトを構築したり、あるいは友達のHPや掲示板の概要を自分のHPの一部に表示するような使用を目標とします。
- RSSとはRich Site Summaryの略で、RSS1.0以降はRDF Site Summaryとも呼ばれています。W3C勧告に沿って定型的に書かれたXMLであり、主にサイトの見出しやリンク、要約などを含むことが出来る為、サイトの紹介やヘッドライン等に用いられています。また、データベース化も容易であるため、検索や過去ログ保存形式としての活用も期待できます。
- よく使われているのはcronに以下のような記述を加え、自動的、定期的にRSSファイルを所得し、HTMLファイルに変換、生成したファイルをSSIやインラインフレームによって表示する方法です。しかしながら、このcron機能は自分でサーバを持っている人でないとほとんど使うことができない為に、レンタルサーバを使用するようなエ鵐疋罅璽兇砲箸辰討聾充妥?癖?,任呂△蠅泙擦鵝
rss_to_html.cgi http://slashdot.org/slashdot.rdf > slashdot.html
rss_to_html.cgi http://www.xml.com/xml/news.rdf > xmlnews.html
- そこで、ここでは多くの有料レンタルサーバ、あるいは一部の無料レンタルサーバ(XREA、SkipUp?、virtualave、hypermart、etc.)で、RSSファイルを利用する為の簡単な方法を説明します。
お勧めCGI
必要なモジュール
- LWP::Simple または LWP::UserAgent?(IO::Socket)
無料レンタルサーバであれば、XREAやVirtualave(hypermart) 、トクトクなどで使用できます。
cf.LWPは標準モジュールではないが、簡便な為、個人的にはLWP::Simpleを用いることが多い。もちろんIO::Socketで代用する事も可能。
あると便利なモジュール
- HTML::TokeParser(HTML::Parser)
cf.おそらくどちらもインストールされている事が多い。RSSファイル生成時に特定タグ間を取り出したりすることが多い為、どちらかというとHTML::TokeParserのほうが使いやすい。
- XML::RSS(XML::Parser)
この有無が最も問題となる。他モジュールはインストールされている事が多い。
cf.XML::RSSとはRSSファイルを読み書き(パース)することに主眼を置いたモジュール。XML::ParserはXMLファイル全般を対象としているのに対し、XML::RSSはRSSに特化されている為、RSSファイルの読み書きにはこちらのほうが使いやすい。しかし、インストールされていない場合もあり、その際はXML::Parserでも代用可能。
RSSファイルを読む-1(XML::RSSを使わない方法)
- 以下のようなコードで表示することができます。SSIで呼び出すとHPに埋め込むこともできます。コードはもっとエレガントに書く事ができるでしょうが、大きなスクリプトではないのでここではあまり気にしない事にします。(RSS0.91,0.92Shift_JISで表示)設置例:http://rss-jp.net/easyparse.cgi
#!/usr/bin/perl
use CGI;
use Jcode;
use LWP::Simple;
my $query = new CGI;
my $url = $query->param('url');
if ($url eq "") {
&form;
exit;
}
else {
$body = get$url;
@line = split ( /\n/ , $body );
$strings .= qq|Content-type: text/html\n\n|;
$strings .= qq|<html><body>\n|;
foreach $ln ( @line ) {
if ($ln =~ /<title>(.*?)<\/title>/ ) {
$title = $1;
}
elsif ($ln =~ /<link>(.*?)<\/link>/ ) {
$link = $1;
}
elsif ($ln =~ /<item>/) {
$strings .= qq|<a href="$link">$title<\/a><br>\n|;
}
}
}
$strings .= qq|</body></html>\n|;
$strings = Jcode->new($strings)->sjis;
print qq|$strings\n|;
##################
sub form {
print qq|Content-type: text/html\n\n|;
print qq|<html><body>\n|;
print qq|<form method="GET" action="$ENV{'SCRIPT_NAME'}">\n|;
print qq|<input type="text" name="url" value="http://bulknews.net/rss/rdf.cgi?Asahi" size="60">\n|;
print qq|<input type="submit" value="READ"></form>\n|;
print qq|</body></html>\n|;
}
RSSファイルを読む-2(XML::RSSを使わない方法)
上ではPerlを用いましたがPHPを用いる方法もあります。
http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS で紹介されている方法がなかなか良い様に思います。
RSSファイルを読む-3(XML::RSSを使わない方法)
- RSSファイルはXMLで記述されている為、そのままではあまり読み易くない上に、ブラウザによっては表示することができません。その為、RSS FeedReader?と呼ばれるものを用いられる事が多い。アプリケーションタイプのものや、Webベースのものなど多くありますが、日本語に対応しているものは少なかったりします。とりあえず読むだけであればWebKanzaki?のFeedReader?(http://kanzaki.com/test/rssfr?u=http://slashdot.jp/slashdot.rdf)などがありますが、自分の好みでページを作ったり、埋め込んだりするのにはRRSMonkeyというCGIをお勧めします。
- 1.rssmonkey を手に入れる。(http://brandbenbrown.com/display.html/rssmonkey)
- 2.解凍する(それの説明はここではなし)
- 3.解凍してできたフォルダをとりあえず何も考えずまるごとCGIの動くフォルダにアップロードしてみる。
- 4.rssmonkey/rssmonkey.pl をエディタで開いて一番上の#!/usr/bin/perlが使っているサーバの設定と違えば変更、変更した場合は改めてアップロード。
- 5.rssmonkey/rssmonkey.plを755, cache.xml を666のパーミッションにする。(または700, 600)
- 6.アップロードしたサーバの rssmonkey/ にアクセスするとindex.htmlが表示されるのでそのフォームにhttp://uber.nu/rss.xmlを入れ送信。記事が表示されたら成功(^O^)
- 7.url.cfgをエディタで開いて所得したいサイトのRSS形式のファイルのアドレスをリストに加えてアップロード。
(例:http://bulknews.net/rss/rdf.cgi?Asahi)
- 8とりあえず6と同じ事をして表示されることを確かめる。たぶん文字化けをしているはず。
- 9.rrsmonkey/front/rss/channel.html をエディタで開き、<html><title>を
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
に変える。ファイルをアップロードしてもう一度8をしてみると、日本語が表示される、、はず。。
- 10.好きなページに埋め込むには、インラインフレームでjavascriptのみを呼び出すhtmlファイル(charset=utf-8)を読み込むのが簡単だと思います。ページ(多くはcharset=Shift_JISなどでは?)にjavascriptを埋め込むとほとんどのブラウザでは文字化けを起こします。
RSSファイルを読む-4(XML::RSSを使う方法)
RSSファイルを書く
RSSファイルには0.9, 0.91, 0.92, 1.0等の規格があります。私なりの見解を書くと、やはり1.0が良いと思います。一般的には0.91が普及していたりしますのでこれでもよいのですが、ただ、インターネットエクスプローラでは生で表示しようとするとエラーが出ます。それだと不安という場合は0.92が良いと思います。拡張子に関しては、.xml, .rdf, .rss等が使われていますが個人的には.xmlが良いと思います。.rdf, .rssなどはブラウザによってはヘルパーアプリケーションを要求してくることがあるからです。
viewer
Webベース
Flash
Windows
Macintosh
JAVA
PocketPC?
editor
Macintosh
source
validator
aggregator
resource
sample site