pearパッケージ化を久々にしました。

"Diggin"ライブラリを久々にpearパッケージ化しました。
pear導入済みなら

pear install http://diggin.musicrider.com/Diggin.tgz

でインストールできます。

前回から色々モジュールを追加しましたが、
今回一番量として大きいのは、codereposやこの日記で小出しにしている
scraperコンポーネントですかね。

demo(http://coderepos.org/share/browser/lang/php/Scraper/demos/Diggin)のを転載しますが、
Web::Scraperのサンプル

my $ebay_auction = scraper {
  process "h3.ens>a",
      description => 'TEXT',
      url => '@href';
  process "td.ebcPr>span", price => "TEXT";
  process "div.ebPicture >a>img", image => '@src';
};

my $ebay = scraper {
  process "table.ebItemlist tr.single",
      "auctions[]" => $ebay_auction;
  result 'auctions';
};

my $res = $ebay->scrape( URI->new("http://search.ebay.com/apple-ipod-nano_W0QQssPageNameZWLRS") );

と似てるかなどうかなぐらいのスタイルで

<?php
require_once 'Diggin/Scraper.php';
$scraper = new Diggin_Scraper();
$scraper->changeStrategy("Diggin_Scraper_Strategy_Selector");
$ebay_auction = new scraper();
$ebay_auction->process('h3.ens>a',
                      'description => "TEXT"',
                      'url => "@href"')
             ->process('td.ebcPr>span', 'price => "TEXT"')
             ->process('div.ebPicture >a>img', 'image => "@src"');
$scraper->process("table.ebItemlist tr.single", $ebay_auction)
        ->scrape('http://search.ebay.com/apple-ipod-nano_W0QQssPageNameZWLRS');
        
var_dump($scraper->results);

と書くことができます。(取得内容が一緒かは知らない。)

もちろん、filterも使えます(フィルタチェインしてませんが)

<?php
require_once 'Zend/Http/Client.php';
$client = new Zend_Http_Client();
$client->setCookieJar();
$client->setUri('http://www.tumblr.com/login');
$client->setParameterPost('email','your@gmail.com');
$client->setParameterPost('password','yourpass');
$client->request('POST'); 
$client->resetParameters();

require_once 'Diggin/Scraper.php';
$scraper = new Diggin_Scraper();
$scraper->setHttpClient($client);
$scraper->process('//a[@href="/followers"]', 'follwers => ["TEXT", "Int"]')//←のIntはZend_Filterの"Int"を指定したことになります。
        ->scrape('http://www.tumblr.com/following');
print_r($scraper->results);

マニュアルも書き始めましたが放置気味。
http://diggin.musicrider.com/manual/ja/index.html