ネタ探し用スクレイピングサイトできた。
自分のネタ探し用のサイトができた。
こんな感じ。
ざっくり説明すると、
ランキングサイトをスクレイピングしてDBに挿入したい
↓
DOM xpathを使って収集
↓
ランキングサイトの記事が一つのまとまりになってない
↓
2つ収集してくっつける
<?php for ($i=0; $i<count($entries); $i++) { $entries3[] = [ 'title' => $entries[$i]['title'], 'link' => $entries[$i]['link'], 'listdata' => $entries2[$i]['listdata'], 'images' => $entries[$i]['images'], 'date' => $entries[$i]['date'] ]; } ?>
(entries3とか番号にするのは悪い見本)
↓
新着動画はいらない
↓
if文で最初の100件飛ばす
↓
動画リンクは主キー
↓
nginxのdefault.confをいじって自分だけがアクセスできるように
↓
アクセスしたときにスクレイピング発動
↓
表示は日付順に300件表示
って感じでできました。
nginxの設定が最難関だったかも。
時間的には10分くらいだったかもしれないけど再起動してエラーが起きて同じサーバーの他のサイトが数十秒逝っちゃうことを3回程繰り返したので・・・。
nginxがapacheより唯一劣ってる部分がこの設定の難しさかもしれない。
正規表現の記述次第で優先順位が変わってくるとかやめて欲しい。
locationの後に「^~」みたいなのつけて解決しました(適当)
表示件数に関しては1日のランキングの差分が10~50程なので表示件数はこれから100件に変更する予定。
★マークは『動画エロタレスト』(アンテナサイト)さんにその動画を使った記事が上がってるかどうかの確認ボタンみたいなやつ。自分でURL入れて検索するのちょっとめんどいからね。ほんとは全動画上がってるかどうか確認させに行って一覧に表示させたいんだけど短時間の連続アクセスみたいなのでブロックされたら元も子もないのでボタンで我慢。
今後導入したい機能としては×ボタンで見たくない動画を一覧から削除する機能。
テーブルにもう一つカラム増やして、×ボタンを押したときに値を渡して、その値がある場合表示しない的な仕組み。