恥ずかしながらphpQueryでエラーが出ていたので、何故だろうとハマっていた話。
ハアハア・・スクレイピングしたいよ!
と何故か興奮している貴方にお届け。
とまあ、ある情報が必要で自身でスクレイピングなるものを実装しようとしていたのですが、今時、そういうのはあるよなと思い検索。
「phpQuery」を発見しました。
結構古めですが、まあ使えるでしょうということで、開発環境での動作確認。
オッケー!
早速サーバに導入、しかし画面は真っ白で。
さて、サーバに入れて動かしてみよっかということで、入れてみると、
ありゃ、画面に何も表示されないではありませんか。
とりあえず抽出した情報だけを表示するページだった為、真っ白なわけです。
phpで何かしらのエラーを吐き出しているんだろうなと思ってはいたのですが、何故かphpのエラーの確認をしないまま、ファイルを確認してしまいました。
更に、とりあえず切り分けということで、エラーの該当箇所を発見。
$hogeObj = phpQuery::newDocument($hogeData);
原因の調査
このオブジェクトを生成するとかいう記述がアウトでした。
しかし、何がどうアウトなのかわからなかった。
とりあえず調べた。
しかし、わからない。
そもそもjqueryの方がヒットしてしまい、情報が見つからない。
そして、出した答え。
「phpのエラー内容を見てみよう。」
さて、phpの設定変更しにいかなければならないよな。
そもそもエラー表示オフにしたっけななんて思いながら、php.ini開くのもなんかいやだなと思っておりました。
おっ、htaccessという便利なファイルがあるではないか。
たぶん、ここに記述するだけで対象部分だけは有効になるのではないかと、、、
思った通りで、htaccessに下記を追加。
php_flag display_errors On
真っ白だったページにエラー内容という一筋の光が。
Fatal error: Class 'DOMDocument' not found ~~
出ました。
解決しそうです。
DOMがPHPに組み込まれていないということで、下記のようにインストールして再起動すれば解決です。
# yum install php-xml
# systemctl restart httpd.restart
(centOS7なのでsystemctlで再起動してます。)
そして、こうして書いている途中にも本当にこれ記述している人いないのかなと思ったのですが、「phpquery エラー」とグーグル検索かけてみると、トップに出ました。
phpQueryでHTMLのtitle要素を抜き出す - Qiita
こちらにcentOSだとこんなエラー出ますよという記述がありました。
phpのエラーはしっかり確認した方が良いですね。
何故スルーしてしまったのか。
簡単なエラーだと勝手に思ってしまうとハマるもんですね。
phpQueryの使い方、というか応用などはおいおい書く予定です。
以上です。