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