読者です 読者をやめる 読者になる 読者になる

Rubyによるクローラー開発技法 読了

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

を読みました。
発売時はえらいニッチな本が出るもんだなと思いましたが、結構売れているようです。 Amazonのプログラミングカテゴリでも上位ですし、rubyでは1位です。すごい。

内容としては

anemone、nokogiri解説、各種scrapeのsampleコードといった感じ。
特にnokogiriのNodeSet、Node、Elementと沢山あるメソッドの説明がちゃんとされているのは良いです。sampleコードは、anemone、nokogiri、seleniumによる方法および便利なgemを使った方法が掲載されています。結構知らないgemがありました。scrape対象もいいなと思いました。後半に出てくるsampleでレインズ(不動産情報)なんかは使えそう。こういう知見がひろまったところはプラスでした。 あと、あまりselenium使ったコードは書いていないので(最近だとcasperJSで書いたりします)参考になりました。

対象者は

webのデータを取得したいけど、どうしていいか分からない人向けでしょうか。rubyの基本的な構文、正規表現、nokogiri(anemone)も分かりますし、sampleコードを参考にすれば、大体事足りると思います。全体的に割と丁寧で対象者を意識してwindowsも大体サポートしているようです。

ただ

コードはあまりきれいではないです。プロダクトコードとして書くとオノが飛んでくるレベル。でも肝はそこではないので、まぁ問題ないです。sampleコードの数は結構あり、大体ちゃんと動きます(一部、対象のWebのhtml構成が変更されているところも既にあったりします。今後どんどん動かなくなっていくと思われるので、この辺が残念。)。
 

・anemone今回初めて触りましたが、結構機能が豊富です。ただメンテされておらず、本書でも文字コードの対応として直接gemに手を入れていたりします。(githubでforkすればいいのにと思いました)
autopagerize を使ってscrapeするところはなるほどなと思いました。
・robotex
URI.encode を利用しているがobsoluteです (参考:rubyでurlのencode - rochefort's blog
Wikipediaに対するクローリングは明示的に禁止されている。へー
・フォントの問題ですが、0(ゼロ) と O(オー)が判別しにくいです。