2013年9月16日月曜日

gentooでwebサイトのキャプチャをとりまくる

webサイトのURLからそのままキャプチャする


webサイトとかのキャプチャをブラウザなどで取得することが多いとは思いますが、そのままコマンドで取得できれば便利ですよね。

そんな僕達の悩みを叶えてくれるライブラリがありましたのでご紹介します。

wkhtmltopdf、wkhtmltoimageを使ってみる


これはwebkitのレンダを利用してURLやhtmlファイルからPDFや画像ファイルへ変換してしまうアプリケーションです。
X Serverを利用するためチョットインストールが面倒なのですが頑張って入れれば何とかなるでしょう。

wkhtmltopdfをインストール


gentooでしたらmaskを外してこれだけです
karky7 ~ # emerge -pv media-gfx/wkhtmltopdf
これでコマンドとライブラリがはいります

wkhtmltopdfを使ってみる


インストールされるコマンドは2つで
  • wkhtmltopdf
  • wkhtmltoimage
使い方はすごく簡単

WebサイトをPDF化する


PDFにする場合は、wkhtmltopdfを利用する
karky7 ~ # wkhtmltopdf https://www.google.co.jp/ /tmp/google.pdf
Loading page (1/2)
Printing pages (2/2)
Done
karky7 ~ #
ローカルのhtmlファイルもPDF化できる、画像が外部ですとしっかり表示できませんでした。
karky7 ~ # wkhtmltopdf gentoo.html /tmp/gentoo.pdf
Loading page (1/2)
Printing pages (2/2)                                               
Done                                                           
karky7 ~ #
これは便利、その他にもgrayscaleや色々オプションがありますので試してください

Webサイトを画像で取得する


画像で取得する場合は、wkhtmltoimageを利用する
karky7 ~ # wkhtmltoimage http://news.livedoor.com/article/detail/7052329/ /tmp/kyaba.png
Loading page (1/2)
Rendering (2/2)                                                    
Done                                                               
karky7 ~ #
こんな感じです


webページ全体が取得できます、画質やサイズなどはオプションで指定できますので--helpで確認してください。

Pythonからご利用する


コマンドでけでも結構便利なのですが、Pythonなんかから使えればなお便利と言うことで探しました、で、ありました。
Gentooでしたらebuildを作っておきましたのでよかったら使ってください。
karky7 ~ # layman -a karky7
karky7 ~ # emerge dev-python/py-wkhtmltox
使い方、公開されているリポジトリをcloneすればサンプルが入っていますのでそれを実行してください、画像が取得できるはずです。
その他のOSの方は、setup.pyを実行すれば入ると思います
import wkhtmltox

img = wkhtmltox.Image()
img.set_global_setting('out', 'test.jpg')
img.set_global_setting('in', 'http://www.google.com')
img.convert()

PHPからご利用する


これは外せない言語ですよね、みんなのPHPが使えないってありえない、で、インストール

Gentooでしたらebuildを作っておきましたのでよかったら使ってください。
その他の、OSの方は、phpizeからのconfigure、makeでインストールできると思います。
karky7 ~ # layman -a karky7
karky7 ~ # emerge dev-php/php-wkhtmltox
使い方はほぼ一緒
<?php

wkhtmltox_convert('image', 
    array('out' => '/tmp/test.jpg', 
          'in' => 'http://www.google.com/')
); // global settings

?>
LWLな言語から使えるとお手軽に実装が出きると思います、gdとかimagemagickでいじればwebサイトのモールとかリスト表示にサムネイルとか表示できて、かっこいいかも。
ちなみに、かわいいおねぇさんの画像をとるためのものではありません。

参考サイト


こちらのサイトを参考にさせていただきました。

0 件のコメント:

コメントを投稿