PHP で、どの程度か分からないけど、
ブラウザで閲覧した時と同様なCSS構造をしっかり表現してくれるらしい
それがGoutte らしい。
HTMLのソースに、CSS を適応してくれる解釈が出来るのか?!
とりあえず、本当はJavaScirpt まで解釈して動的な数値やら読み込みやら、
置換されたパス、他に動的に付け加えられる内容(例えばスクロールすると読み込む何かとか)
それらまで実は表現して欲しいけど、どうもそれはPhantomJS とか
JavaScript の解釈用の何かを入れた方が早い(のかな)?
どこまでやってくれるのか、全くわからないけど、メモ(このブログ)を
残しながらやってみようと思う。
とりあえず、色々、色々考えまくっているが、
調べながら分かった事のメモを残す(毎度長い前置きorz)
さて、その今回の対象物Goutte
公開してるのは
https://packagist.org/packages/fabpot/goutte
こっちは、どうも公開方法に拘っている?っぽい?
https://github.com/FriendsOfPHP/Goutte
つまり、Composer を使う事を前提にしてるっぽい。
説明関係
http://wiki.nonip.info/index.php/Php/Goutte
http://ss-complex.com/2014/05/php_blog/
http://d.hatena.ne.jp/hnw/20120115
http://matomater.com/18784/
http://blog.asial.co.jp/1316
http://chiplus.net/2014/11/06/post-1300/
じゃこれは何だ?と今一度問うて
http://matome.naver.jp/odai/2139123528062735701/2139143210772374803
ほほう?fabpot/Goutte????
よくわかんないけど、fabpot とは公開してる人の名前だったw
https://github.com/FriendsOfPHP/Goutte
なーるほど@@;
でこっちはGitHub での公開
https://github.com/FriendsOfPHP/Goutte
ふむふむ
これはどう使えと??っと考えてみてると
とあるサイトには.phar 拡張子をphp で読み込めば
PHP に内部実装してある
Phar が動くからOKって記事がちらほら
Phar は
http://qiita.com/rana_kualu/items/4b2ef7bfff83939d7ef5
http://sasezaki.hatenablog.com/entry/2012/02/09/002416
でもでも・・・・実は私がGitHub を見たときには
removed phar support の文字が・・・
つまりPhar圧縮しての公開はしないっぽいです。
http://dondoko.hateblo.jp/entry/2014/09/06/113027
ここでも
「goutteはいろんなコンポーネントを使用して構成されているらしく、
最新のgoutte.pharはそれらがまとまっていたのだが。
goutte1.0.6にはgoutte単体しかなく、そのかわりcomposer.jsonが置いてあった。」
とある。
圧縮してあると、中身のバージョンアップ、面倒なのかな?とか、
中身にウイルスとか入ると困るからかな?とか、いっぱいなんか
考えられるし、そういう系統(Pharの問題)のブログもネット検索で
あった。
Composer の問題
http://co3k.org/blog/composer-replace-security-bug-has-been-fixed
http://dqn.sakusakutto.jp/2014/07/php_composer_require-dev.html
なんか読めば、
「まずはお使いのすべての Composer を self-update サブコマンドで更新しましょう。」
らしい。
それをすればOKとかなんだろうか?
自分でPharアーカイブ作るのはまだ対策後ならいいけど、
むしろそれだけでなくてPhar のファイルをダウンロードをむやみにするな!って
事なんじゃないだろうかと。
で、話は変わってComposer は、Linux のパッケージ管理みたいに、
指定のパッケージをダウンロードして、ファイルとフォルダの構成を
ある型に従ってしてくれるっぽい(今頃説明かっ!)。
説明によるとPHP の依存管理ツールらしい
http://9ensan.com/blog/programming/php/php-composer-cli/
Composer の使い方としてこっちもあった(勝手に日本語)
https://kohkimakimoto.github.io/getcomposer.org_doc_jp/doc/01-basic-usage.html
本家
https://getcomposer.org/download/
Composer の公開は、
安定版 => dist => –prefer-dist オプション
開発最新版 => source => –prefer-source オプション
らしい。
他にもなんかいっぱい
http://laravel.hatenablog.com/entry/2013/11/18/004325
http://www.ryuzee.com/contents/blog/5681
その他のその他
http://qiita.com/notona/items/c5a087d8dd446d315e6e
http://qiita.com/masarufuruya/items/23131a465b7e9c8f3060
Windows Installer っていうWindows 用があったので
https://getcomposer.org/download/
にComposer-Setup.exe
というのがあったので、これを落としてインストールしたら、
PHPのphp.exe のパスを尋ねられる部分で自動でphp.exe のパスが
私の場合は入っていた。
Windows のウィンドウ説明付きはこっちにあった
http://qiita.com/mikoski01/items/266469535e860312145d
これでインストールすると、私の場合path が、環境変数に
「C:\ProgramData\ComposerSetup\bin」
と追加された。
インストーラーの実態は、
「C:\Program Files (x86)\ComposerSetup」
だった、右クリックでJSON を選択した時に、Windows ならば
インストールできるという機能もつくけど、JSONだと、どんなJSONでも
表示されちゃうから、嫌な人はインストーラー使わない方でもいいかも。
後、PHP のパスを聞いてきているので、PHP を通す設定を
私の場合は手動でpath に書いているけど、「C:\PHP-x.x.x」とか
これらもしているから、再起動後、簡単に動いたのかもしれない。
どうであっても、実態は、php.exe で、composer.phar に引数、
例えばinstall をつけて実行しているに過ぎないのが分かる。
installディレクトリには、composer.bat があって、中身に1行
「@ECHO OFF php "%~dp0composer.phar" %*」とあるだけ。
同じディレクトリにcomposer.phar が存在する。
本当に面倒だと思うならば、PHPのpath 通ってる様になら、
php のフォルダに入れちゃってもいいんじゃないかなと。
ここででは、戻って本題のGoutte をダウンロードしてみた。
https://github.com/FriendsOfPHP/Goutte
にある
https://github.com/FriendsOfPHP/Goutte/archive/master.zip
これをダウンロードして展開すると
諸々のファイルと、必要なライブラリダウンロード構築用の
composer.json
が見つかる。
私の場合はWindwos に右クリックの機能を入れちゃったので
そこからinstallを選んで終ってしまった。
手動でも composer install
と、composer.json が展開されたフォルダに移動して
打ち込めば、composer のパスが通ればそれで終る。
さっき言った面倒だから!って人は、php.exe がある場所に
composer.phar を置いて、php.exe のある場所のpath だけを
通しておいて、php.exe composer.phar install とかでいいんじゃないかな?
それでこれが結果
Command: composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing symfony/dom-crawler (v2.7.1)
Downloading: 100%
- Installing symfony/browser-kit (v2.7.1)
Downloading: 100%
- Installing symfony/css-selector (v2.7.1)
Downloading: 100%
- Installing guzzlehttp/promises (1.0.1)
Downloading: 100%
- Installing psr/http-message (1.0)
Downloading: 100%
- Installing guzzlehttp/psr7 (1.1.0)
Downloading: 100%
- Installing guzzlehttp/guzzle (6.0.2)
Downloading: 100%
symfony/browser-kit suggests installing symfony/process ()
Writing lock file
Generating autoload files
C:\Apachex.x.x\htdocs\goutte_composer_project\Goutte-master>
(私の場合のパスです)
これでめでたし! と思ったら、
なんかPhar になってない事に気がついて
気になって仕方ない・・・・
確かにPhar でなくても動くけど気になる。
うーん・・・と思って気がついたのは、
同じCoutte のディレクトリに「composer.json」とは違う名前で
「
box.json」っていうのが存在する・・・
これを色々調べてみると、これがPhar アーカイブを作るためのJSONらしい。
http://qiita.com/morishitter/items/d6401176d99953cce4da
http://qiita.com/iwai/items/2c65273a6640c7b3fec2
本家
http://box-project.org/
GitHub
https://github.com/box-project/box2-lib
これ、言い方がよくわからない
たとえるならば、
BOX が本名で、型式がbox2-lib でアドレスなどではbox2 と略して使われる。
型式の方が一般的に通用する名称?みたいなたとえ話で、人には通じるのだろうか?w
まぁ、とりあえずボックスさんが必要です^x^;
それの中身は普通にPHP でした。
https://box-project.github.io/box2/installer.php
コピペでもいいかもしれない・・・
でも、
公式には
$ curl -LSs https://box-project.github.io/box2/installer.php | php
って書いてあるね・・・
でこれ、実は多分、Windowsインストーラーないですからw
もう、Windows にインストーラーで入れちゃって
Composer と一緒でいいなら
「C:\ProgramData\ComposerSetup\bin」
に入れておけば、パス通るしw
気になるなら別にフォルダ作って、環境変数のPath 作ればいいんだろうな?って感じでした。
必要なコンポーネント集めるには公式みてると
$ composer global require 'kherge/box=~2.4' --prefer-source
Composer が必要みたい!
それでビルドは
$ box build -v
とかでいいのかも。
これ、メモなので、BOX辺りから、自分で試してないので、
間違ってたら、後日でも修正します!(多分)
他、リンク
Goutte内部で使われるSymfony2の~~~
http://blog.asial.co.jp/iphone/756
Composer の
http://codezine.jp/article/detail/7827
「Goutte」と「phpQuery」を比較
http://qiita.com/ka215/items/79c30e9c15ae0462f457
これも「Goutte」と「phpQuery」比較
http://ka2.org/compared-to-goutte-and-phpquery-of-scraping-library-for-php/
Goutte vs. Simple HTML DOM Parser
http://qiita.com/soarcreator/items/56a971d42b8b640b76a6
PHP コードをコーディング規約に沿うよう修正してくれるツール 「PHP CS Fixer」
これもComposer でパッケージ管理されていて取得できるっぽい
http://fivestar.hatenablog.com/entry/2014/12/08/033345
https://github.com/FriendsOfPHP/PHP-CS-Fixer
テストの作成をしてテストできるみたい
http://fuelphp.caph.jp/articles/tag/goutte/
Symfony2の機能テストと基本的に同じ
http://qiita.com/77web@github/items/3cd3b56985d5c6845661
Goutteでコントローラーテスト
http://kinjouj.github.io/2012/12/fuelphp-24-goutte-controller-testing.html
似て非なる何か、でも参考「Behat」
http://blog.moccori.com/d/2013-05-27
DomCrawlerコンポーネント(symfony2)
http://docs.symfony.gr.jp/symfony2/components/dom_crawler.html
質問関係
http://q.hatena.ne.jp/1408766188
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12134822307
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13142533538
http://ja.stackoverflow.com/questions/6485/goutte%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
この人はGoutte使おうと思ったらイケてなかったらしい
http://qiita.com/peka2/items/108da70e2df9be75ac49
これ本格的
別々のGoutte\ClientにCookie情報を引き継いで渡したい
http://skgckj.hateblo.jp/entry/2015/02/04/091724
Goutteを使って
http://kkkw.hatenablog.jp/entry/php/scrape-with-goutte
英語だけど
http://incarnated.net/blog/scrape-web-goutte
How to simulate javascript support?(英語だけど質問)
https://github.com/FriendsOfPHP/Goutte/issues/175
How to use Goutte(英語だけど質問)
http://stackoverflow.com/questions/15628926/how-to-use-goutte
ではメモでした<_ _>