perl初心者のまめこです
こんなに場違いなところで記事を書くのは初めてです!
tomyheroからの課題で muxtapeのタイトルを取得して表示させるスクリプトを書いてみましたー。ほげほげ。
正解コードはこちら
#!/usr/local/bin/perl
use strict;
use Web::Scraper;
use LWP::UserAgent;
use Perl6::Say;
use Data::Dump;
my $user = $ARGV[0] || 'woopsdez' ;
my $web = scraper{
process '//div[@class="name"]',
'titles[]' => 'TEXT',
};
my $ua = LWP::UserAgent->new( agent =>'Mozilla/5.0 (Macintoch; U; Intel Mac OS X; ja-JP-mac; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14' );
$web->user_agent( $ua );
my $response = $web->scrape( URI->new( "http://$user.muxtape.com/") );
for my $title ( @{$response->{titles}} ){
say $title;
}
まめの書いた間違いコードはこちら
#!/usr/local/bin/perl
use strict;
use Web::Scraper;
use URI;
use Perl6::Say;
use Data::Dump;
my $scraper = scraper {
process '#onge5ad938d2abd7574eb1900542c5a4a21 .name','title' => 'TEXT';
};
my $uri = new URI('http://woopsdez.muxtape.com/');
my $res = $scraper->scrape($uri);
say dump($res->{title});
print $res->{title};
参考にしたところ
use Web::Scraper; - 今日のCPANモジュール
つまづいたところ
Web::Scraperっていうので
process ' cssのid or class名 ' , '自分の好きな名前' => 'TEXT';
ってやれば$scraperに指定したidやclassの中身のテキストが取得出来るんだー。と簡単に考えてたけど上手く取得出来てないみたいですた。
dumpをしてみても[Abort trap]って出るばかり。なんだったんだろう。
先生の言うとおり書いてみたら動いた!
試しに書きかえてFlickrの写真タイトルを取得しようとやってみたけど失敗しました。
むー。(´・ω・`)
次はyusukebeさんが作ったWebService::Simple;でやってみたいと思うます!



そもそもWeb::Scraperする必要無くて http://woopsdez.muxtape.com/rss でよくね?
rssで良いんですけど、あえてこういう課題にしてもらいましたー!