WebService::DMMを書いてみた
DMMがようやく WebAPIを提供ということで書いてみました。
Perlのコードを久しく書いていなかったのでリハビリも兼ねてます。
サンプルコード
#!perl use strict; use warnings; use lib '../lib'; use WebService::DMM; use Config::Pit; use utf8; binmode STDOUT, ":utf8"; my $config = pit_get('dmm.co.jp', require => { affiliate_id => 'DMM Affiliate ID', api_id => 'DMM API ID', }); my $dmm = WebService::DMM->new( affiliate_id => $config->{affiliate_id}, api_id => $config->{api_id}, ); my @items = $dmm->search( site => 'DMM.co.jp', service => 'mono', floor => 'dvd', sort => 'review', keyword => '蒼井そら', hits => 10, ); my $index = 1; for my $item (@items) { printf "%2d: %s\n", $index, $item->title; $index++; }
結果
1: 公然妄想露出 アエギ声出しちゃダメ!! 蒼井そら 2: 蒼井そら エスワン8時間Special 3: 秘密捜査官の女 被虐の巨乳エージェント 蒼井そら 4: Sola様のM調教 蒼井そら 5: ギリギリモザイク 妄想的特殊浴場 本指名 蒼井そら 6: 夫の目の前で犯された若妻 蒼井そら 7: ギリモザ 交わる体液、濃密セックス 蒼井そら 8: ギリギリモザイク 繰り返す昇天、壮絶アクメ。 蒼井そら 9: 極美映像 ハリウッド基準で魅せる超高画質セックス 蒼井そら 10: 犯された人妻女教師 蒼井そら
おわりに
レスポンスが EUC-JPでエンコーディングされた XMLなんですが、
これは一体誰得なんでしょうか ? LibXMLで EUC-JPの XMLがパース
できるかは環境依存ぽかったので、UTF-8に変換してからパース
しています。
DMMは、「このページ, テンプレート使って書いてるの?」みたいなのが
多々あり(あるところだけ、class属性が抜けているなど)、とてもスクレーピング
しづらかったので、これでいくらかマシになったように思えます。
ただ EUC-JPとか XMLとか今時の Web APIではないように思えました。
もう少し、修正とテストをして CPANに出すか検討します。