• 締切済み

wikipediaのAPIの取り込みについて

wikipediaのAPIを取り込みたいと思っています。 以下のURLをIE6から叩けば、「東京ドーム」に関するwikipediaの情報がxmlの形式で表示されるのですが、 http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/%e6%9d%b1%e4%ba%ac%e3%83%89%e3%83%bc%e3%83%a0 これを、 use LWP::Simple; $url = "http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/%E3%83%8A%E3%82%B9%E3%82%AB%E3%81%AE%E5%9C%B0%E4%B8%8A%E7%B5%B5"; $res = get($url); print $res; exit; としても、取得できません。 どなたか、このwikipediaのURLから情報をperlで取得する方法を教えていただけませんか。お願いします。 #なお、perl初心者です。 #サンプルコードを試行錯誤で書き換えしながら先に進むタイプです。 ちなみに、SimpleAPI(http://wikipedia.simpleapi.net/)による「東京ドーム」の取得は出来るのですが、 #上記コードの$urlを"http://wikipedia.simpleapi.net/api?keyword=%E6%9D%B1%E4%BA%AC%E3%83%89%E3%83%BC%E3%83%A0&output=xml"にする。 この場合、ダイジェスト文だけで全文は取得できません。 無謀かもしれませんが、全文を取得したく、前者のURLからの取得を望んでいます。 どうかよろしくお願いします。

みんなの回答

回答No.2

lwp は単純にhttpの通信をするだけですから、xmlの解析には、XML::Parser、XML::Simpleを使いましょう。

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

use LWP::Simple qw(get $ua); $url = "http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/%e6%9d%b1%e4%ba%ac%e3%83%89%e3%83%bc%e3%83%a0"; $ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); $res = get($url); print $res; exit;

kzilpanda
質問者

お礼

ありがとうございます! 取得できました。 ただ、$resは、各要素の内容を並べただけの単なる文字列になるようです。 #xmlの各要素の情報が得られないようです。 <title>タグや、<text>タグの情報だけ抽出したいのですが、xml情報を保ったまま取得するのは無理でしょうか? #ちなみに、質問文の2つめのURLは、「東京ドーム」のwikipedia APIのつもりでしたが、間違って「ナスカの地上絵」のものをペーストしてしまったみたいです。紛らわしくてすみません。

関連するQ&A