PHPでDOM、WEBスクレイピング実現しようと、浅学菲才ならぬ「浅学被災」な状態になっている爺です。
レンタルサーバーで連続使用30秒、というのを何とかしようと考えると熱が出そうです。熱が出ても解決できるならともかく、とてもできそうもないというのが、爺の「被災」状況です。
1回の巡回で取得する件数を少なくする
これまで、以前取得してないURLはすべて調べるということにしていました。その結果、1サイトでも10秒以上かかるというようなことになっておりました。ここを短くするにはスクリプトを改善し動作を早くする、というのがまず考えることです。
しかしながら、大して時間消費を減らすことができませんでした。それで、1サイト・1回あたりの取得数を制限することにしました。
その結果が次のような時間経過です。1サイトあたり1~2秒程度で済んでいます。これなら、15サイトくらいまで一回の巡回にくみこめそうだと妄想しました。
1(Aサイト) 17:04:17 : DB接続・サイト基本データ取得開始 (略) 17:04:17 : サイト表頁 個別記事リンク用DOM終了 (略) 17:04:17 :差分URLにアクセスし、記事情報取得 開始 17:04:18 :差分URLにアクセスし、記事情報取得 終了 17:04:18 :DB接続・新記事投稿 開始 17:04:18 :DB接続・新記事投稿 終了 2(Bサイト) 17:04:18 : DB接続・サイト基本データ取得開始 (略) 17:04:19 : サイト表頁 個別記事リンク用DOM終了 (略) 17:04:19 :差分URLにアクセスし、記事情報取得 開始 17:04:20 :差分URLにアクセスし、記事情報取得 終了 17:04:20 :DB接続・新記事投稿 開始 17:04:20 :DB接続・新記事投稿 終了 17:04:20 :巡回一連 終了
あとは、差分チェックとCRONに頼る
1回UPしたURLはDBに保管します。それを利用しようという考えです。
例えば、1回に3記事UPにすると…
CRON | 新 | UP | 未 |
1回目 | 10 | 3 | 7 |
2回目 | 7 | 3 | 4 |
3回目 | 4 | 3 | 1 |
4回目 | 1 | 1 | 0 |
1日4回CRONを実行したら10本の記事をUPできる。ちょっと時間がかかるけど…、というような妄想・幻想であります。
さて、なんとかなるのかしらん…。CRONのことも勉強しなくては…。