pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:Webスクレイピングのスクリプト、レンタルサーバーで動いた

PHPでDOM、WEBスクレイピングなどして、RSSが無いサイトでも、記事の更新情報を取得したいと6月上旬からどりょくしたふりの爺でありました。

とあるレンタルサバに移植。PDO接続でエラー

自サバからレンタルサバですから、MySQL(DB)関係の書き直しは当然でありますので、そのあたりはバッチリ!

さて、と動かしてみると次のようなエラーがでました。

SQLSTATE[HY000] [1045] Access denied for user ''@'x.x.x.x' (using password: NO)error:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line X

1045→パスワードがセットされてない? 自サバでは動いたのに…。いわゆるPCわからない耄碌爺状態です。「さっきまでPCちゃんと動いていた」「わしは何もしとらん」「勝手に止まった」…あれやこれや…。

PDO接続の書き方によってはつながらないこともあるみたいです

自分が書いたPHPスクリプトで、とあるサイトをスクレイピングし、それをMySQLWordpressに投げる、というのが大略やりたいことです。
その、最初のところからNGだと…。
エラーが出ているあたりを見ていくと、どうもPDO接続の最初の部分でNGになっているみたいだ~。ということでネット徘徊や手元書籍の斜め読みなどいたしまして、修正を加えました。

なんとか動きました。結局は同じ指示をしているのだろうけど、見え方が違う、というPDO接続の書き方、という印象でありました。

WordpressのDBテーブル名でうっかりミス

「wp_posts」がWordpress記事を置く、MySQLのテーブル名になります。ええ、一般的には…。ところが、WP設置などの時に、わかりやすいように名前を変えてしまって…それに対応した書き直しをしてなかった…。
「wp_」のあとどうしますか~みたいな、あのときの設定に関係するものです。なにもしなければ、たとえば「wp_posts」となりますが、「arere」とかを指定すると、できあがるテーブル名は「wp_arere_posts」などとなる…。

CRONは順調

phpスクリプトの定時自動実行は、設定ができました。設定が難しい、とかいうのより、レンタルサバが、どういう頻度・継続時間を許すのか、というあたりが大切かと思いました。

ブラウザを使って他者が実行しないよう「.htaccess」で

.htaccess」で、今回のスクリプトを配置したディレクトリ(フォルダ)を覗かれたり、webブラウザ経由でPHP稼働されないように設定しました。

課題。閲覧対象となるHTMLソースはさまざま

まだ課題があります。URLの書き方、同じdivの記事でもあえてリンク設定してないのもある、などイロイロなHTMLソースに出会います。
万能なPHPの書き方はできないので、対象サイトを選び(≒目視)ながら、いくつのサイトまで安定してチェック対象にできるか、確認をすすめたいと思います。