忍者ブログ

カウンター

プロモーション

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


  • 2024/05/06 00:29

スクレイピングのGoutte インストール(Composer)とPhar アーカイブ化(box2-lib)

PHP の調べ物

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

ではメモでした<_ _>

拍手[0回]

PR


  • 2015/07/12 10:21

コメント一覧

  • お名前
  • Email

  • コメント

  • Vodafone絵文字 i-mode絵文字 Ezweb絵文字
  • パスワード
[PR]