WEB制作メモ

web制作・ビジネス・アイデア・生活・ホームページ制作・更新など

php で phantomjs検討、duskをつかってスクレイピングする。

php で ファントムJSをつかってスクレイピングする。
ヘッドレスブラウザ phantomjs
 
jsで作られたあとの表示をスクレイピングしたい。
 
 
PhantomJSは開発を中止している。
puppeteer (パペッティア)が後継?
 
PuPHPeteerはNodeライブラリであるPuppeteerをPHPでも利用出来るようにしたもの
 
nodejs  などが必要なようで、単体では動かない?
 
ブラウザをつかわない方法に対して、
 
ブラウザテストなどを目的とした
seleniumを使った方法や
duskという方法もあるみたい。
 
 
laravelを使いたいのでduskを使ってみようか
 
ブラウザを自動操作できる?
 
ローカルコンピュータへJDKSeleniumをインストールする必要はありません
DuskはスタンドアロンのChromeDriverを使用
 
composer require --dev laravel/dusk
 
エラー
  The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true   
 
php.iniを変更
curl,openssl部分
extension_dir = "ext"
extension=bz2
extension=curl
extension=openssl
 
 
composer require --dev laravel/dusk
 
再度挑戦。
インストールできた。
 
php artisan dusk:install
 
php artisan dusk
php artisan dusk:fails
php artisan dusk --group=foo
Warning: TTY mode is not supported on Windows platform.
PHPUnit requires the "mbstring" extension.
またもやエラーphp.iniの変更

Warning: TTY mode is not supported on Windows platform.
PHPUnit 9.5.19 #StandWithUkraine
 
No tests executed!

 
php artisan dusk:make test
testsというフォルダができる
なかに
Browser
Feature
Unit
ができる。
 
実行してみる
TTY mode is not supported on Windows platform.
エラー
Warning: TTY mode is not supported on Windows platform.
これは、無視してもよいという人もいる。色付けなどの部分なので、実際の実行には影響はすくないらしい。
 
まずはこの状態で、テストをしてみたい。
ブラウザが立ち上がり、テキストを読み込んだり、clickしたりしたい。
 
tests\DuskTestCase.php
option “–headless” をコメントアウトすると実際にブラウザが立ち上がる。
 
いまいちエラーがどこで起きているのか判別できない・
$browser->driver->manage()->getLog('browser');
 
これでも取れない。
 
iframeが問題か
withinFrame
というものがあるらしい。
 
こちらでうまくいった!
ありがとうございます。