「Webスクレイピングとは (Web scraping) ウェブスクレイピング: - IT用語辞典バイナリ」をやろうともがいている(≒あがいている)爺です。使っているのはPHPです。
これまでのまとめと、この先の課題をまとめておこうかと思っています。
自サバではおよそできた、PHP配列ポインタ、DOM、正規表現などで苦労した~
自サバでは、いくつかのサイトを巡回し、狙ったタグを目印に、タイトルや平文を抜き出すのを自動的にできるようになりました。
作業で苦労したのは次のようなことです。
PHP配列ポインタの理解に時間がかかった
爺は、1980年代中盤以降しばらくの間、N88-basicをやっていました。「for i=1 to 800 step 1」というような世代であります。配列もA(x,y)というように、いずれも明示的に数字で示しながら使うというフルーイ体質…。その後、VBAをやって今日に至る…。
今回、PHPをやってみて、配列のポインタが今どこを指しているのかというようなことに一番苦労したです。「オブジェクト」というつかみ方もやはり苦手…。
DOM
これは、正規表現に該当する以外のところは比較的楽でした。HTML、CSSの苦労はこれまでにかなりしてきてますので、今回は、ラクでした。HTMLソースを表示し、どのタグ・要素にポイントを絞ればスクレイピングしやすいか、という判断は、適宜できたのではと思います。構造言語としてのHTML…。
ただし、aタグhref要素につけるURLに囲みの「"」がないとか、URL末尾に「?」と英数文字がたくさん自動的についてきて、など、人間のすること考えることが一筋縄ではいかないのだと思い知らされました。
今後の課題
これからレンタルサーバに移植するのに際し、いくつか課題も見えてきています。
PHPスクリプトの書き直し
無駄な動作が無いようするためのPHPスクリプトの書き直しが一番の作業です。また、自サバだからできた、というようなことがレンタルサバでできない、ということが起こることかと思います。これをクリアしないとね。
セキュリティが気になる
現在、http://127.0.0.1/a.php をブラウザのURLのところに打ち込んでPHPを使っています。これが、レンタルサバになると http://x.jp/a.php などというようなことで稼働することになる…。つまり、URLがわかればだれでも稼働できる…。そうだとすると、それはイケマセヌ。これを設定したCRONだけが動かす、というようなことにならんとイケヌのかと。
また、いくつかのPHPスクリプト・ファイルにわけて稼働しています。a.phpからa1.phpを呼び出し、続いてb.phpに移動し、などという具合に…。途中のスクリプトを呼ばれたらどうなるのかということも考えておかないとね…。
WEB画面(ブラウザ)で入力するのにはPOSTなどが使われますが、今回はありません。
phpMyAdmin画面で直接、チェック対象とするサイト代表URLなどを入力しています。これは、レンタルサバの場合ログインのために関門がいくつかあるので大丈夫だろうと想像しています。
サーバ接続30秒ルールは、一巡時間を短くするため、1サイトあたりの取得件数を絞っています。これが妥当かどうか、どの程度のサイト数までエラーが起こらず運用できるか、時々確認が必要になるかと思っています。
DB接続はPDOだけでおこなっていますので、一般的な方法よりは安全だろうと思っています。さて、気が付いてないセキュリティ問題はないのか…ネット徘徊しながらチェックしていきたいと思っております。
さて…。