BLOGTIMES
2013/05/10

Node.js でスクレイピングに挑戦

  nodejs  javascript 
このエントリーをはてなブックマークに追加

前々からちょっと興味があった Node.js を使い始めてみることにしました。

まずはインストールから

インストールは rpm にしたかったので、「installation - How do you install Node.JS on CentOS? - Server Fault」を参考にして rpm を生成してインストールしました。これを実行するためには ruby の gem で fpm*1 を予めインストールしておく必要があります

実際の手順としてはこんな感じ。

wget http://nodejs.org/dist/node-latest.tar.gz tar zxvf node-latest.tar.gz cd node-v* ./configure --prefix=/usr/ make mkdir /tmp/nodejs make install DESTDIR=/tmp/nodejs/ NODEJSVER=$(basename `pwd` | sed 's/node-v//') fpm -s dir -t rpm -n nodejs -v $NODEJSVER -C /tmp/nodejs/ usr/bin usr/lib rpm -ivh nodejs-$NODEJSVER-*

これでインストールが完了したので、プログラミングに入ります。

先日のニコンのレンズリストを作ってみる

今日のスクレイピングのお題は先日作成した EXIF からレンズ名を取り出すプログラムで使っているレンズリストを F-Mount lenses listed by Extended LensID から作り出すことにしたいと思います。作成にあたっては「Node.jsのScraperでお手軽スクレイピング! #JavaScript #Node.js - Qiita [キータ]」というエントリを参考にさせていただきました。ここでは scraper というモジュールを使っているので npm install scraper としてインストールしておきます。

make_nikon_lens_db.js

var scraper = require('scraper'); scraper('http://www.rottmerhusen.com/objektives/lensid/thirdparty.html', function(err, $) { if (err) {throw err;} $('#tlidlist3 tr').each( function(){ var cols = $(this)[0].querySelectorAll('td'); if( cols.length != 3 ) return; var lens_id = $(cols[0]).text().trim(); var lens_maker = $(cols[1]).text().trim(); var lens_name = $(cols[2]).text().trim(); console.log( '\'' + lens_id + '\' => array(\'' + lens_maker + '\',\'' + lens_name + '\'),'); }); });

これを使うと一撃で下記のようなリストを得ることができるようになりました。
これでレンズリストがアップデートされても問題ありません。

'01 58 50 50 14 14 02 00' => array('Nikon','AF Nikkor 50mm f/1.8'), '02 42 44 5C 2A 34 02 00' => array('Nikon','AF Zoom-Nikkor 35-70mm f/3.3-4.5'), '02 42 44 5C 2A 34 08 00' => array('Nikon','AF Zoom-Nikkor 35-70mm f/3.3-4.5'), '03 48 5C 81 30 30 02 00' => array('Nikon','AF Zoom-Nikkor 70-210mm f/4'), '04 48 3C 3C 24 24 03 00' => array('Nikon','AF Nikkor 28mm f/2.8'), '05 54 50 50 0C 0C 04 00' => array('Nikon','AF Nikkor 50mm f/1.4'), '06 54 53 53 24 24 06 00' => array('Nikon','AF Micro-Nikkor 55mm f/2.8'), '07 40 3C 62 2C 34 03 00' => array('Nikon','AF Zoom-Nikkor 28-85mm f/3.5-4.5'), '08 40 44 6A 2C 34 04 00' => array('Nikon','AF Zoom-Nikkor 35-105mm f/3.5-4.5'), '09 48 37 37 24 24 04 00' => array('Nikon','AF Nikkor 24mm f/2.8'),

完全版のレンズIDリストはこちら


トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5792
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン