- blogs:
- cles::blog
2013/05/10

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


前々からちょっと興味があった 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 を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112122)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110764)
3 . 年次の人間ドックへ(110365)
4 . 2023 年分の確定申告完了!(1つめ)(109913)
5 . 三菱鉛筆がラミーを買収(109812)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110764)
3 . 年次の人間ドックへ(110365)
4 . 2023 年分の確定申告完了!(1つめ)(109913)
5 . 三菱鉛筆がラミーを買収(109812)
cles::blogについて
Referrers