Automation/app/Controllers/Crawler/YamapController.php
2024-09-09 20:41:06 +09:00

62 lines
2.4 KiB
PHP

<?php
namespace App\Controllers\Crawler;
use App\Controllers\CommonController;
use App\Libraries\MyCrawler\YamapLibrary as MyCrawler;
class YamapController extends CommonController
{
public function crawling(string $option = ""): string
{
try {
$crawler = new MyCrawler();
if ($option === "debug") {
$crawler->setDebug(true);
}
//1. 사이트 로그인 처리
$user = $crawler->login();
$crawler->getMyStorage()->setUser($user);
$items = [];
//2. 해당사이트 MainPage 처리
if ($crawler->getDebug()) {
$items[] = [
'title' => getenv("yamap.view.test.title"),
'nickname' => getenv("yamap.view.test.nickname"),
'detail_url' => getenv("yamap.view.test.url"),
'time' => date("Y-m-d H:i:s"),
'hit' => 1
];
} else {
$items = $crawler->mainPage(getenv("yamap.list.url"));
}
if (!count($items)) {
throw new \Exception("Yamap 사이트에서 게시물이 존재하지 않습니다.");
}
$max_limit = intval(getenv("yamap.list.item.max_limit"));
$max_limit = count($items) <= $max_limit ? $items : $max_limit;
$i = 0;
foreach ($items as $item) {
if ($i <= $max_limit) {
try {
//3. DetailPage 처리 : bbs_view > div.contents 가진 객체를 찾아서 처리
$fileEntitys = $crawler->detailPage($item["detail_url"]);
//4.망보드 일반게시판에 게시물 등록 처리
$crawler->createBoard($item, $fileEntitys);
log_message("notice", "{$i}번째 {$item["nickname"]} 작업완료.");
} catch (\Exception $e) {
log_message("debug", $e->getMessage());
}
}
$i++;
}
log_message("notice", "Crawler->" . __FUNCTION__ . " 작업이 완료되었습니다.");
return "완료되었습니다.";
} catch (\Exception $e) {
log_message("error", $e->getMessage());
return $e->getMessage();
}
}
}