Hatena::Groupperlmemo

Perlメモ

2008年09月18日 より開始
最新5件(RSS 2.0)
古いモジュールの更新

Plagger(Fedora10)
Plagger(Ubuntu9.04)

CPAN::Mini

Remedie(Ubuntu 9.04、Vine4.9(5α)、Fedora11Preview)
Remedie(Fedora10) 見れたサイトまとめ
編集

2008-09-21

新着日記名と最新エントリーのタイトルを表示 faviconも表示

| 新着日記名と最新エントリーのタイトルを表示 faviconも表示 - Perlメモ を含むブックマーク はてなブックマーク - 新着日記名と最新エントリーのタイトルを表示 faviconも表示 - Perlメモ 新着日記名と最新エントリーのタイトルを表示 faviconも表示 - Perlメモ のブックマークコメント

ちょっと時間かかりますが。(RSSにタイトルが入ってないので1つ1つ取得するため)

$ sudo yum install "perl-XML*"

#!/usr/bin/perl
use strict;
use LWP::Simple;
use XML::RSS;




print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . "\n";
print "<title>rss</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";



#my $url = 'http://d.hatena.ne.jp/naoya/rss';
#my $url = 'http://perlmemo.g.hatena.ne.jp/fedora9/rss2';
my $url = 'http://d.hatena.ne.jp/diarylist?mode=rss';  #新着日記一覧rss(URL)
my $document = LWP::Simple::get($url) or die
"cannot get content from $url";


my @diaryurl;

my $rss = XML::RSS->new;
$rss->parse($document);
for(@{$rss->{items}}) {
  push(@diaryurl, $_->{link});  #linkタグ取得 @diaryurl へ(itemの下のlink)
}


foreach(@diaryurl) {

    /.+jp\/(.+)\//;  #http://d.hatena.ne.jp/sample/  のうち sample が $1 に入る。 jp/ と / の間
    my $username = $1;

    my $foldername = substr($username, 0 , 2);  # sample のうち sa。0文字目から2文字

    my $profile =  'http://www.hatena.ne.jp/users/' . $foldername . '/' . $username . "/profile_s.gif";
    print '<img src="' . "$profile" . '">';


    
    my $rssurl = $_ . "rss2";  #日記のrss(URL)

    my $document2 = get($rssurl);
    
    my $rss2 = XML::RSS->new;
    $rss2->parse($document2);



    my $channel = $rss2->{channel};

    print '<a href="' . $_ . '" target="_blank">' . $channel->{title} . '</a>';  #日記名とリンクを表示
    #print $channel->{title};  #日記名

    for(@{$rss2->{items}}) {
    	print $_->{title} , "<br>\n";  #1つめタイトル取得  表示(itemの下のtitle)
        last;  #ループを抜ける
    }
    print "<br>\n";

}


print "</body>\n";
print "</html>\n";

Perlモジュール活用 RSS編 RSS解析はXML::RSSにおまかせ - [CGI・Perl]All About  リンク切れ


はてなダイアリー - 新着日記一覧

新着日記一覧のRSSを取得して日記名一覧表示 (XML::RSS を使ってみる)

| 新着日記一覧のRSSを取得して日記名一覧表示 (XML::RSS を使ってみる) - Perlメモ を含むブックマーク はてなブックマーク - 新着日記一覧のRSSを取得して日記名一覧表示 (XML::RSS を使ってみる) - Perlメモ 新着日記一覧のRSSを取得して日記名一覧表示 (XML::RSS を使ってみる) - Perlメモ のブックマークコメント

$ sudo cpan XML::RSS

#!/usr/bin/perl
use strict;
use LWP::Simple;
use XML::RSS;

#my $url = 'http://d.hatena.ne.jp/naoya/rss';
#my $url = 'http://perlmemo.g.hatena.ne.jp/fedora9/rss2';
my $url = 'http://d.hatena.ne.jp/diarylist?mode=rss';
my $document = LWP::Simple::get($url) or die
"cannot get content from $url";

print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . "\n";
print "<title>rss</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";

my $rss = XML::RSS->new;
$rss->parse($document);
for(@{$rss->{items}}) {
  print $_->{title}, "<br>\n";
  print $_->{link}, "<br>\n";
  #print $_->{dc:date}, "<br>\n";  #エラー
  print $_->{'dc'}->{'date'}, "<br>\n";
  print "<br>\n";
}

print "</body>\n";
print "</html>\n";

$ perl test.pl


はてなダイアリー - 新着日記一覧


作って学ぶ、今どきのWebサービス:第2回 RSSフィードの料理はLWPとXML::RSSにおまかせ (1/2) - ITmedia エンタープライズ

XML::RSSモジュールはオブジェクト指向インタフェース


暇人専用:XML::RSSでAggregationModuleをParseしたかった。

2008-09-19

新着日記一覧100件表示

| 新着日記一覧100件表示 - Perlメモ を含むブックマーク はてなブックマーク - 新着日記一覧100件表示 - Perlメモ 新着日記一覧100件表示 - Perlメモ のブックマークコメント

#!/usr/local/bin/perl
#新着日記一覧表示

use strict;
use lib qw(./mylib);
use LWP::Simple;

my $year = 2009;

&Header();  #ヘッダー表示

&printDiarylist();  #新着日記の一覧を表示

&Footer();  #フッター表示



sub Header {
	print "Content-type: text/html\n";
	print "\n";
	print "<html>\n";
	print "<head>\n";
	print '<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">' . "\n";
	print "<title>hatenadiarylist</title>\n";
	print "</head>\n";
	print "<body bgcolor=\"#ffcccc\">\n";
	
	return 0;
}


sub printDiarylist()  {  #base printCount
	#my $i=0;
	my $max = 500;  #表示件数
	for(my $i=0; $i<$max/50; $i++)
	{
		my $pagenumber = $i * 50;
		my $url = 'http://d.hatena.ne.jp/diarylist?of=' . $pagenumber;
		
		my @data = split(/\n/, get($url));  #改行で分解して @dataへいれる
		
		foreach ( @data ) {
			if(/<li>$year/) {
				print;
			}
		}
	}

}


sub Footer {
	print "</body>\n";
	print "</html>\n";

	return 0;
}

2008-09-18 20:38:43~2008-09-19 21:18:56(24時間40分)の間に15,000エントリーアップされていました。


はてなダイアリー - 新着日記一覧