2018/05/10
PHPでスクレイピング
はじめに
既にあるPHPで構成済みのシステムで
スクレイピングをしなければならなくなった。
そんな時の導入と使い方メモ。
スクレイピングをしなければならなくなった。
そんな時の導入と使い方メモ。
インストール
今回はGoutteというモジュールを使用しました。
ググったらヒットする割合が多く、特に使い勝手が悪くなかったので採用。
ググったらヒットする割合が多く、特に使い勝手が悪くなかったので採用。
インストールは以下。
1 2 | composer require fabpot/goutte composer dump-autoload |
これでオートローダー等に書き込まれる(はず)。
使ってみる
まずは使える準備。
ネームスペース定義。
1 | use Goutte\Client; |
取得してみる。
1 2 3 4 5 | $client = new Client(); $content = $client->request('GET', $url."?".http_build_query($data)); if ($client->getResponse()->getStatus() != '200') { return 'request error'; } |
フォームを取得
1 2 3 4 5 6 | $form = $content->filter('form')->first(); $newUrl = $form->attr('action'); $content->filter('input')->each(function($node) use (&$newParams) { $newParams[$node->attr('name')] = $node->attr('value'); }); |
まずはレスポンスが正常に帰ってきてるかチェック。
そしてフォームを探し、その中のinputのname, valueをそれぞれ抽出して
配列に格納、、、ということを実施しました。
所感
書き方が独特なのと
ドキュメントが豊富でないのとで慣れるのに時間を要するのはデメリット。
ドキュメントが豊富でないのとで慣れるのに時間を要するのはデメリット。
ただしどうしてもcomposer経由でPHPでのスクレイピングをやらなければならない!
という時には、まあ使えるレベルのものなので良しとします。
Author Profile
スターフィールド編集部
SHARE