perlでRSSファイルを取得してTITLEタグの内容を抜き出したいのですが、
XML::RSSが使えない状況では、どのようにしたらいいでしょうか?
my $document = LWP::Simple::get($url)後に正規表現で取り出して
print タイトル<br>という風に表示しようと思っています。
よろしくお願いします。
----下記のページを参考にしています。
http://www.itmedia.co.jp/enterprise/articles/070 …
No.2ベストアンサー
- 回答日時:
正規表現で処理する前にutf-8をEUCに変換します。
Perlの正規表現はEUC以外では環境次第ですので動作保障が出来ません。
その後、全テキスト読み込み、「<title>」「<link>」タグの付いた行をそれぞれ配列「@T」「@L」に代入という前提で
for(my $i=0; $i<=$#T; $i++){
$T[$i] =~ s/<title>(.+)<\/title>/$1/;
$L[$i] =~ s/<link>(.+)<\/link>/$1/;
print '<a href="'.$L[$i]."'>".$T[$i]."</a><BR>\n";
}
で抽出が完了すると思います。
タイトルだけならLINKの部分を取ってください。
なるほど処理する文字コードの違いがでてくるわけですね。
正規表現でのマッチ方法も理解できました。
ソースを対応させて動かしてみます。
ありがとうございました。
No.1
- 回答日時:
こんにちは、
あくまでも参考程度ですが。
以下のスクリプトをutf-8Nで保存して
ActivePerlで実行したら、
naoyaのはてなダイアリー
会社にお泊まり
と表示されます。
#! /usr/bin/perl
use strict;
use warnings;
use utf8;
#>----下記のページを参考にしています。
#リンク先のxmlサンプルをコピペしました。
my $document = << "END_OF_DOCUMENT";
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/naoya/rss">
<title>naoyaのはてなダイアリー</title>
<link>http://d.hatena.ne.jp/naoya/</link>
<description>naoyaのはてなダイアリー</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://d.hatena.ne.jp/naoya/20050330/1112136510"/>
:
:
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://d.hatena.ne.jp/naoya/20050330/1112136510">
<title>会社にお泊まり</title>
<link>http://d.hatena.ne.jp/naoya/20050330/1112136510< …
<description>夜遅かったので会社に泊まることにしました。</description>
<dc:date>2005-03-30T07:48:30+09:00</dc:date>
</item>
END_OF_DOCUMENT
my @titles = $document =~ /<title>([^<]*)<\/title>/ig;
binmode STDOUT, ":encoding(shiftjis)";
print "$_\n" for @titles;
exit;
>print タイトル<br>
この様子だとCGIだと思いますが、文字コードには
気をつけないといけませんね。
正規表現はあまり得意じゃないので、自信がありません。
あくまで参考程度に。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mechanizeのタイムアウト処理に...
-
Excel VBAでリンク切れをチェッ...
-
例外処理のフローチャートの記...
-
VBA This Workbookモジュール...
-
教えて下さい。
-
Excel VBAで、ユーザーフォー...
-
VBのフォームモジュールと標準...
-
本当にPublicな変数(配列で)
-
Net::SSH::Perlについて
-
'Range'メソッドは失敗しました
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
初歩的な質問なのですが、サブ...
-
Excel VBAで、ユーザーフォーム...
-
「デバイスは PRN を初期化でき...
-
モジュールとは何ですか
-
VBからブラウザの表示状態(リ...
-
laravel 本番環境でメールが送...
-
SendKeysの使い方について
-
VBA モジュールで共通に使う変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VHDLについてですが何がお...
-
Perl での XML 処理での DTD 宣...
-
Perl/TkでURLを既定のブラウザ...
-
Perl/TkのWWW::MechanizeのGET...
-
Perlでのselfの書き方
-
Perl/Tk Entry に対して見出し...
-
WWW::Mechanizeを使っておられ...
-
mechanizeのタイムアウト処理に...
-
Excel VBAでリンク切れをチェッ...
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
エクセルVBAでシートモジュール...
-
LCD ディスプレイを Raspberry ...
-
VBAで旧字体を異字体に一括で変...
-
VBAのサブルーチンとプロシージ...
-
VBでグローバル変数を宣言するには
-
VBSがコンパイルエラーになりま...
-
'Range'メソッドは失敗しました
-
Excel VBAで、ユーザーフォー...
おすすめ情報