tokuhirom's Blog

phantomjs を Perl からつかえる Wight をためした記録。

YAPC で motemen さんが発表していた Wight をためしたのでそのメモ。

まだ開発途中なかんじなのでドキュメントなどは揃っていないが、ひととおりのメソッドは用意されている、といった印象です。しかしいくつかハマりどころもあるのでメモしておきます。

背景として、テストしたいとかではなく Crawler とかを Wight つかって書こうとしてみているという話です。

Wight::Node のドキュメントがない

ドキュメントないのはともかくメソッドの一覧もないのはきついので、pull-req をおくった。
https://github.com/motemen/Wight/pull/4

おくったあとできづいたけど Wight.pm の方にちょっとかいてあった。。でも Wight/Node.pm の方にかいてあるとありがたいです。see NODE METHODS section in Wight.pm とかかいておくのでもいいけど。

やたらとしゃべる

なにやら web application の console.log の内容がすべて stdout にでるっぽくてうるさい。

なんか解決策がみつからないので issue にした。

https://github.com/motemen/Wight/issues/3

Wight->new(dont_print_web_site_console_log => 1) 的なかんじで出力させられなくなるといいのかなあ。

タイムアウトする方法がよくわからない

↓この issue がそれっぽいかなー、とおもったりはしている。
https://github.com/motemen/Wight/issues/1

要はなんかおもいページのときにあきらめさせたいのだがどうやったものかとおもっている感じです。

$wight->visit() を複数回よぶときは $wight->reset をよぶ

$wight->visit() を発行したあともう一回よぶと、遷移するまえにかえってきちゃうので $wight->reset() をよんでリセットする必要があるっぽい。もっといい方法があるのかもしれないけど。。

$wight->reset() が undocumented なのではまった。

rake いれるのがめんどかった

なんか ruby 力がひくくてパッチおくるために rake うごかそうとしたらなんかうまくうごかなくて、gem install rake とかなんかいろいろやってたらうごくようになった。

CSS Selector support

https://github.com/motemen/Wight/pull/5

XPath つかって書くのめんどいなーというところで Web::Scraper のロジックを移植して、css selector でも find できるようにした。そして pull-req した。

User-Agent かえたい

けどどうやったらいいのかわからない。phantomjs_args で設定するかんじかな。

https://github.com/ariya/phantomjs/blob/master/examples/useragent.coffee

こういうかんじでできそうだけど。。

まとめ

phantomjs 直接つかったほうが楽かなーとおもって直接かいたりもしてみたのだけど、Wight の方が圧倒的に楽でした。

motemen++