--- title: Web::Scraperの参考になるサイト author: kazu634 date: 2009-04-15 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4559;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Perl ---

Web::Scraperを使うたびに検索するのが面倒くさいので、ここに役立つサイトを貼っておきます。

use Web::Scraper; – 今日のCPANモジュール

今日作成したスクリプト

いい言葉ねっと By Shu」の今日のいい言葉を取得します。

# === Libraries ===
use strict;
use warnings;
# === Libraries ===
use URI;
use Web::Scraper;
use YAML;
use Encode;
use utf8;
# === Main part ===
my $scraper = scraper {
process '/html/body/div/div/div/div[4]/div/div[2]/div[2]/table/tr/td/div/strong',
'body' => 'TEXT';
};
my $result = $scraper->scrape( URI->new("http://www.e-kotoba.net/") );
print encode('utf8', $result->{body});
# Reference: 
# Below is the sample
#   (1) <div class="ekotoba">...</div>の部分をbodyに取得
#      process 'div.ekotoba', 'body' => 'TEXT';
#   (2) XPATHで指定
#      Firebugsなどを用いる。

作成するときのテンプレート

# === Libraries ===
use URI;
use Web::Scraper;
use YAML;
use Encode;
use utf8;
# === Main part ===
my $scraper = scraper {
process 'XPath',
# Reference: http://e8y.net/mag/013-web-scraper/
# Below is the sample
#   (1) <div class="ekotoba">...</div>の部分をbodyに取得
#      process 'div.ekotoba', 'body' => 'TEXT';
#   (2) XPATHで指定
#      Firebugsなどを用いる。
};
my $result = $scraper->scrape( URI->new("http://google.com/" ));
print encode('utf8', YAML::Dump($result));
# print encode('utf8', YAML::Dump($result->{body}));