« Plagger::Plugin::Filter::AddAmazonDescription | メイン | URIの正規化 »

Web::Scraperで配列の中にハッシュを入れる

ようは

- links:
  - title: タイトル1
    url: http://url.1
  - title: タイトル2
    url: http://url.2
  - title: タイトル3
    url: http://url.3

というようなデータ構造を作りたい。 この場合、あるWebページにリンクがたくさんあって、そこからタイトルとURLをスクレイピングしてハッシュにし、それを一つの配列に入れるというもの。 「Web::Scraper プレゼン@YAPC::EU: blog.bulknews.net」のプレゼン資料に例が載ってた。 processの中にもう一つscraperを走らせればよいみたい。

追記

miyagawaさんにはてブでコメントいただきました。

その後のスライドにあるけど、単に "links[]" => { title => 'TEXT', link => '@href' } でもいい

とのことです!

#!/usr/bin/perl

use strict;
use warnings;
use URI;
use Web::Scraper;

my $links = scraper {
        process "td.tcell",
                'links[]' => scraper{
                        process 'a',
                                'title' => 'TEXT', 'url' => '@href';
                };
};
my $res = $links->scrape( URI->new("http://jp.sun.com/mashupaward/entry1.html") );

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/2202

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo