人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

RDFの配信をトップページを読み込んで自動生成して行いたいと思います。いろいろ探して、kanzaki.comのサンプルスクリプトを見つけたのですが、うまくいきません。cgi-binの中においています。アクセスすればきちんと返ってくるのですが、<rdf:Seq>が空ですし、item rdf:aboutも生成してくれていません。サンプルスクリプトの設定項目は斜体の部分以外に何を設定すればいいのでしょうか。

●質問者: mcafee
●カテゴリ:ウェブ制作
✍キーワード:CGI RDF アクセス スクリプト トップページ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● shiten
●10ポイント

while(<>)ではなく

if (open INF, ***){

while(<INF>){

などで読み込む必要があります。


2 ● sasada
●10ポイント

http://www.kanzaki.com/docs/sw/rss-generation.html

RSS生成スクリプトのサンプル

kanzaki.comのサンプルスクリプトとは、「

http://www.kanzaki.com/docs/sw/rss-generation.html

RSS生成スクリプトのサンプル

」のことでしょうか?

だとすれば、まず頭の3行の変数を設定する必要が有ります。(たぶん、今回の原因はこれだと思います)

あと、日本語を正確に抜き出す為には、jcodeなどを用いて、SHIFT-JISからEUCなどのコードに変換しないと、誤動作するかもしれません。

あと、スクリプトの斜体の部分埋め込みで、メタキャラクタ(”とか)等のPerl上の文法エラーで上手くいってないのかもしれませんので、検証してみては如何でしょうか。

まずは、基本的なところから回答してみました。

◎質問者からの返答

そのスクリプトです。

$item_title = ”h3”; #タイトルとリンクを抜き出す要素

$item_descr = ”p”; #説明文を抜き出す要素

$host = ”http://www.*****.com/index.htm”;

としています。

文法チェックしましたが、問題ありませんでした。文字コード以前に何も読み込んでないようなのですが、何ででしょう・・・(文字コードはすべてUTF-8です)。とりあえず、$hostを読みに行っているとして良いのですよね・・・。


3 ● sasada
●10ポイント

うーん、なんでしょう。。。

確認ですが、つまり元ファイルは、

<h3><a href=”*********”>????????</a>

となっているということで宜しいですね?

スペースの空き方も、大文字小文字の区別も厳密に。

そうでなければマッチしないので、各パターンマッチングを修正しなければいけません。

たとえば、

>if(m|<${item_title}.*?><a href=”(.*?)”>(.*?)</a>|){

if(m|<${item_title}.*?¥s*>¥s*<a¥s*href=”(.*?)”¥s*>(.*?)</¥s*a¥s*>|i){

に変更するとかです。

あと、このスクリプトは元ファイルのタグが明示的に閉じている(</?>という閉じタグがある)ことを要件としていますが、ここもOKですか?

さらに、「文字コードはすべてUTF-8」とのことですので、Perlの処理系に明示した方が良いかもしれません。

とまで書いて、気がつきました!!

>とりあえず、$hostを読みに行っているとして良いのですよね・・・。

いえいえ、そうとは限りません。

このスクリプトは、標準入力から読み込んだxhtmlファイルからRSSを生成して標準出力に書き出すものです。

標準入力に何か入れてやらないと、入力待ちで止まってしまうような気がします。

さすがに、これは大丈夫ですかね。。


4 ● namwonS
●50ポイント

スクリプトみました。

もし、CGIとして動作させるなら、(CGI-BINに置く以上、そうですよね)

>while(<>){

ではダメで、

$org_filename = ’original file name (inclute path name)’;

if (open INF, $org_filename) {

while(<INF>){

:

:

}

}

としてみてください。

今のままでは、HTTPのリクエストを読んで、RSSを出力しようとして失敗するはずです。

◎質問者からの返答

なるほど。perlやってる人から見ると、非常に初歩的な問題なのでしょう。自分の勉強不足です。お騒がせしました。

この機にperlを勉強してみようと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ