IKEAに行ってきたのでスクレイピングしてみる。
IKEA港北に付き添いで行ってきました。付き添いと言っても野郎ですが(w。
シンプルで好感が持てるデザイン、さすが北欧家具だなと(でも今の自分の家には合わないな...それなりに広い所に住まなくては)。日本のメーカには真似できなさそう。
そして買い物の仕方が独特。ショールームにある家具の番号をメモしておいて、最後に米軍の武器庫のような巨大倉庫から家具の材料をカート(!)に入れるシステム(だから連れが必要)。買った材料は家に持ち帰って自力で組み立てる。
そんな訳で、IKEAの新製品情報をスクレイピングしてみました。
左の新製品情報ナビを辿って新製品一覧をとりました。さすが家具屋だけあって構造が奇麗、スクレイピングしやすいわ。
CSSセレクタ版
my $domein = 'http://www.ikea.com'; my $url = 'http://www.ikea.com/jp/ja/catalog/news/range/'; my $scraper = scraper { process 'title','title[]' => 'TEXT'; process 'div.productNavigation div.productItem span.prodName','products[]' => scraper { process 'a','category' => 'TEXT'; process 'a','list' => sub{ my $cat_url = $domein.$_->attr_get_i('href'); scraper { process 'div.productPadding ','data[]' => scraper { process 'a','link' => '@HREF'; process 'img','image' => '@SRC'; process 'span.prodName','name' => 'TEXT'; process 'span.prodDesc','dec' => 'TEXT'; process 'span.prodPrice','price' => 'TEXT'; }; result qw/data/ }->scrape(URI->new($cat_url)); }; }; result qw/title products/ }->scrape(URI->new($url)); print YAML::Dump($scraper);
XPathだとこんな感じ
my $domein = 'http://www.ikea.com'; my $url = 'http://www.ikea.com/jp/ja/catalog/news/range/'; my $scraper = scraper { process '//title','title' => 'TEXT'; process '//div[@class="productNavigation"]//div[@class="productItem"]/span[@class="prodName"]','products[]' => scraper { process '//a','category' => 'TEXT'; process '//a','list' => sub{ my $cat_url = $domein.$_->attr_get_i('href'); scraper { process '//div[@class="productPadding"]','data[]' => scraper { process '//a','link' => '@HREF'; process '//img','image' => '@SRC'; process '//span[@class="prodName"]','name' => 'TEXT'; process '//span[@class="prodDesc"]','dec' => 'TEXT'; process '//span[@class="prodPrice"]','price' => 'TEXT'; }; result qw/data/ }->scrape(URI->new($cat_url)); }; }; result qw/title products/ }->scrape(URI->new($url)); print YAML::Dump($scraper);
出力
- category: スウェーデンフード list: - dec: ダブルチョコクリスプ image: /PIAimages/74505_PE191681_S2.jpg link: /jp/ja/catalog/products/70124686 name: DUBBLA CHOKLADFLARN price: \ 795 - dec: オートクリスプ image: /PIAimages/66444_PE179371_S2.jpg link: /jp/ja/catalog/products/49650057 name: HAVREFLARN price: \ 695
友人曰く「IKEAの店舗がこのまま増えていくとユニクロみたいになりそうだ」と。
なるほど、周りの家が自分と同じ家具ばっかりなのはちょっと嫌だな、恥ずかしいかも。