Yahoo!ブログ検索のRSSをブログ検索APIとして使うPerlのプログラムについて

このQ&Aのポイント
  • ActivePerlとAN HTTPDをインストールして、Perlの勉強中なのですが、http://chalow.net/2006-10-04-1.htmlのサイト上にある「Yahoo!ブログ検索のRSSをブログ検索APIとして使う」というソースを元に、CGIを実際に作ろうと思っています。
  • もとのソースをコピペしただけで、何もいじらすに作ったCGIがうまく実行できません。
  • 簡単なCGIは作ることはできたので、WEBサーバーの立ち上げなどはうまくいっているはずなのですが、なぜ、このCGIが作れないのかがわかりません。
回答を見る
  • ベストアンサー

「Yahoo!ブログ検索のRSSをブログ検索APIとして使う」というPerlのプログラムについて

ActivePerlとAN HTTPDをインストールして、 Perlの勉強中なのですが、 http://chalow.net/2006-10-04-1.html のサイト上にある「Yahoo!ブログ検索のRSSをブログ検索APIとして使う」というソースを元に、CGIを実際に作ろうと思っています。 しかし、もとのソースをコピペしただけで、何もいじらすに作ったCGIがうまく実行できません…。 約2年前のソースなので、ヤフー検索のRSSのアドレスが変わってしまったのではないかと思い、 my $url = "~://blog-search.yahoo.co.jp/rss?p=$key&n=$num&b=$page"; の部分を色々といじってみたりしたのですが、うまくいきません…。 簡単なCGIは作ることはできたので、WEBサーバーの立ち上げなどはうまくいっているはずなのですが、 なぜ、このCGIが作れないのかがわかりません…。 元のソースのプログラム記述ミスとは思えませんし、 Perlのバージョンなどが関係しているのでしょうか…? お知恵をお貸しいただけると、嬉しいです。

noname#115630
noname#115630
  • Perl
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

どんなエラーが出てるかが、書いてないので 原因はわかりかねますが、私が試したらそのままで動きます。 (ただし、Linux+apacheですが) ・perlのパスが違う ・文字コード、改行コードがおかしい ・コピペミスで、余計な文字が入っている(特に全角スペース) このあたりを見直してみてください。

noname#115630
質問者

お礼

回答ありがとうございました。 補足で書かせていただいたエラーは、文字コードが原因だと思ったので、文字コードを直してみて、再度チャレンジしてみました。 モジュールHTML::Templateのインストもしていなかったので、してみたのですが、今度は 1行目の、#!~\bin\perl -Tの-Tがおかしいというエラーが出てしまい、-Tを消すと、 Can't use string ("<html lang="jp"><head><title>Yah") as a SCALAR ref while "strict refs" in use at D:/Perl/lib/HTML/Template.pm line 1597, <DATA> line 14. というエラーが…。 いろいろと解決できない問題はたくさんありますが、ありがとうございました。

noname#115630
質問者

補足

ActivePerlとAN HTTPDのインスト方法と設定方法は http://www.dream-seed.com/pukiwiki/index.php?Windows%2FActive%20Perl%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%28AN%20HTTPD%29 に載っている方法を試していて、Dドライブに保存して、ファイル名はyahoo2.cgiです。 1行目の#!の行を読み込むように指定しているのですがエラー内容は、 Error 500 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Backslash found where operator expected at D:\web-root\yahoo2.cgi line 1, near " rtf1\" Backslash found where operator expected at D:\web-root\yahoo2.cgi line 1, near "ansi\" Backslash found where operator expected at D:\web-root\yahoo 2.cgi line 1, near "ansicpg932\" Backslash found where operator expected at D:\web- root\yahoo2.cgi line 1, near "deff0\" Backslash found where operator expected at D:\web-root\yahoo2.cgi line 1, near "deflang1033\" Backslash found where operator expected at D:\web-root\yahoo2.cgi line 1, near "f0\" Backslash found where ope rator expected at D:\web-root\yahoo2.cgi line 1, near "fnil\" Backslash found where operator expected at D:\web-root\yahoo2.cgi line 1, near "fcharset128 \" なのですが、1行目がおかしいということだと思うのですが、near"~"に含まれる単語はプログラム中には書かれていないので、 なぜエラーになるのかがわからないのです…。

関連するQ&A

  • Yahoo!ブログ検索に表示されない

    私はブログをやっているのですが(1年ほど前に始めました)、最近になってYahoo!ブログ検索に表示されなくなりました。以前は更新すると数分後にはブログ検索に表示されていたのに、今は更新しても表示されるのに3日~一週間くらいかかるようになりました。 他の人のブログは更新するとわりとすぐに表示されているのに、どうして私のブログが急に表示されなくなったのか分からなくて悩んでいます。 トラックバックやコメントはしていないし、スパムなどの迷惑行為が原因ではないと思うんですが・・・連続投稿もしていないし、宣伝・アダルト・物販サイトでもない普通のブログなんですが。 他のブログサービスに移ってみてもやっぱり私のブログの記事は更新後3日くらいたたないと表示されないんです。 でも、上の「登録サイト」のところには登録もしてないのにサイトが載っているんです。更新pingを確認してみても送れていると出るし、原因が分からないんです。 どうしたら検索に表示されるようになるでしょうか? http://help.yahoo.co.jp/help/jp/blog-search/blog-search-18.html Yahooにメールしても上記に書いてあることを言われるだけで、具体的な回答がもらえませんでした。 http://api.my.yahoo.co.jp/RPC2 または http://api.my.yahoo.co.jp/rss/ping?u=あなたのサイトのRSSファイルのアドレス の方にもpingは送れているし、テンプレートも公式のものをいじらずに使っているので書式に問題はないと思うのですが・・・ 考えられる原因や打開策など分かる方がいらっしゃいましたら、よかったら教えていただけないでしょうか? よろしくお願いします。

  • ヤフーで自分のブログが検索されないのはなぜ?

    fc2でブログをしていますが、ヤフーでは自分のブログが検索されません。 gooでは大丈夫です。 ヤフーを調べ 「ttp://api.my.yahoo.co.jp/RPC2 または http://api.my.yahoo.co.jp/rss/ping?u=あなたのサイトのRSSファイルのアドレス」 にping送信していますがだめです。 何か原因があるのでしょうか。 よろしくお願いします。

  • ヤフーブログ検索で本文が検索されません。ping送信済みのはずなんですが・・・。

    ヤフーブログ検索に登録したんですけどブログの記事がヒットしません。 で、一応ping送信も数日前に行いました。 http://api.my.yahoo.co.jp/RPC2 または http://api.my.yahoo.co.jp/rss/ping?u=あなたのサイトのRSSファイルのアドレス ということで後者の方 http://api.my.yahoo.co.jp/rss/ping?u=http://blog.goo.ne.jp/****/index.rdf 上記のURLを送信済みなんですけどこれでもなにかが足りないのでしょうか? どなたかご存知の人いましたら教えてください。 通常の検索エンジンと同じでヒットするまでに数週間とかかかるのでしょうか? またRSSファイルのURLとは私のブログのTOPページのRSSと表示されている場所を右クリックしてショートカットのコピーというのをクリックしてペーストしたものです。 詳しい人教えてくださいませ。よろしくお願いします。

  • yahoo!のPING送信の検索ロボット巡回先への推薦の設定についてです><

    http://api.my.yahoo.co.jp/RPC2 または http://api.my.yahoo.co.jp/rss/ping?u=あなたのサイトのRSSファイルのアドレス となっているのですが あなたのサイトのRSSファイルのアドレス がよく分かりません。 あったのですが クリックすと 保存か実行にになり ファイルが開けませんになります。 アドレスはどうしたら分かるのでしょうか? http://api.my.yahoo.co.jp/RPC2 だけでは なぜか ブログ検索に表示されません。 利用しているのはヤプログです。他のヤプログのブログは表示されてるようですが 私のブログだけ ブログ検索に表示されません。グーグルなどは表示されます。 WEB検索でも インデックスされている記事が、かなり少ないです。 けども 普通に検索に表示されるので WEB検索では問題はないのですが、 何か規約に反してるなら ブログ検索だけ表示されないのは なぜなのでしょうか?

  • HTMLで作っているサイトに、別で動かしているブログのRSS情報を取り込みたい。

    さくらインターネットでHTMLでサイトを作成しています。 そして、FC2ブログで日記や気になったニュースを載せるブログをやっております。 さくらのサイトの方に、FC2ブログのRSS情報を取り込んで、更新情報として表示させたいのですが、これを実現できるようなCGIはありますでしょうか? RSSを読み取り、それをリスト形式などで整形して出力するCGIがあれば、可能だとは思うのです。 RSSを読み込み、サイトに表示させるようなCGIはいくつかあるようなのですが、出来れば、色々とレイアウトを試したいので、RSSの中の情報を取捨選択して取り出せるCGIが欲しいと思っています。 Perlで、そういう機能を持ったCGIはありますでしょうか? もし知っておられましたら、教えていただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ブログを作るとRSSデータが自動的に作られるのですか?

    こんにちは。ブログについて質問させてください。 とっても初心者的な質問ですが…よろしくお願い致します。 ブログ(例 ライブドアブログなど)を作ると、 自動的にRSSデータが作られて (1) RSSリーダの取得対象になるのでしょうか? (2) YAHOOなどの検索エンジンに   ひっかかるようになるのでしょうか? 通常のホームページでは、YAHOOなどの検索エンジンにひっかかるようにするには何かに登録する作業が必要があると聞いたことがあるのですが… (ブログの場合はブログを作るだけで、 何も登録作業がいらないのでしょうか?) YAHOOやGOOGLEなどの検索エンジンが RSSに対応しているとうことなのでしょうか? アドバイスお願い致します。 よろしくお願い致します。

  • YAHOO ウェブ検索Web APIを使ったプログラム

    perlのペーペープログラマーです とりあえず動けばOK的にしか作れないレベルです 現在YAHOO ウェブ検索Web APIを使ったプログラムを作成しています (プログラム、フォーム用、結果表示用のHTMLなどもutf-8で記述) 大体普通に動くのですが一部キーワードを使うとなぜか違う検索結果が返ってきます 例:SEOツール 1.返ってくるべきページ http://search.yahoo.co.jp/search?p=SEO%E3%83%84%E3%83%BC%E3%83%AB 2.なぜか受け取るページ http://search.yahoo.co.jp/search?p=SEO%83c%81[%83%8B なぜか2のshift-jisっぽいものが返ってきます 他のキーワードなどでは普通のUTF-8のページが返ってきます 文字化けなどはほとんどありません 正直まったく原因が分かりません いったい何をどうすれば良いのでしょうか? ソースは下記みたいな感じです &decode; #デコードサブルーチン use LWP::Simple; use XML::Simple; $url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=$appid&query=$in{'keyword'}"; $response = get($url); $xml = new XML::Simple; $yahoo_xml = $xml->XMLin($response); $tra = $yahoo_xml->{totalResultsAvailable}; $page = <<"EOF"; $tra EOF &page; #ページ表示サブルーチン $pageを表示 ちなみに文字化けは他プログラムでは発生していましたが解決しました 関連性があるのでしょうか? 問題 APIから帰ってきたものを@lineに入れてHTML表示 それ以外の変数文字列が文字化け 解決策 APIから返ってきたものをforeachでutf-8にデコードしたら他のものが普通に表示されました。 foreach (@line) {Jcode::convert($_, "utf8");} こんな感じです これは返ってきたものなので、そもそも返って来るものが違う場合もうお手上げです。 何がなにやら分かりません 上手に説明できませんでしたが、よろしくお願いいたします また教えてgooへの投稿に慣れていないもので至らない点あるかと思いますがご容赦ください

    • ベストアンサー
    • Perl
  • ブログのRSS閲覧について

    ブログをやっています。 最初に書いたブログがYahoo検索で4,990,000万検索中1位になるなどという幸運もありました。 それを知ったのはそのブログのアクセスレポートからですが、 最近気になることがあります。 そのレポートでブログ本文ではなくRSSだけを閲覧する人がいることです。なんか気味が悪い感じがしましたが、 どうも10分おきくらいに6時間自動で閲覧されていることもあるのでロボットだと思いますが、これは何を意味するんでしょうか? もしかして最近更新していないのでリーダーで調べているのでしょうか?詳しい方お教えください。

  • ブログAPIを公開している企業はあるか?

    最近PHPとデータベースでブログを作りました。 ふと思ったのですが、複数無料blogサイトに一斉に投稿できる機能を つけたいと思いました。アメーバ、livedoor、Yahoo、FC2. APIは公開されていないのでしょうか? ただ、PING送信先は公表されているので、一斉投稿機能をもつ ブログを開発する必要はないと思ったのですが、PING送信機能と blog投稿機能では、ちがいはありますでしょうか? PING送信だけだと、トップページに表示されない?

  • 1行目、Perlの宣言

    ActivePerlをC:\Perlにインストールしました。するとperl.exeはC:\Perl\bin\perlにありました。 そこでCGIファイルの1行目に   #! C:/Perl/bin/perl としましたが、実行してみるとコードがそのまま表示されてしまいます。 「Perl」と大文字を含むからかと「P」を小文字に変えてみたり、あるいは「/」を「\」にしてみたりと試しましたが、やはり機能しません。 httpd.confは教科書に書いてある通りに書き換えました。 何が原因でCGIがまともに動かないのでしょう。 OSはWindows Vista、Apacheは2.0.54、ActivePerlは5.8.7.813です。

    • ベストアンサー
    • CGI

専門家に質問してみよう