Automation/app/Traits/MyCrawlerTrait.php
2024-09-05 00:09:04 +09:00

42 lines
1.5 KiB
PHP

<?php
namespace App\Traits;
use Symfony\Component\DomCrawler\Crawler;
trait MyCrawlerTrait
{
final protected function createByMyCrawler($html): Crawler
{
return new Crawler($html);
}
public function getNodesByMyCrawler(Crawler $crawler, array $options, $nodes = []): array
{
$crawler->filter($options["tag"])->each(
function (Crawler $node) use (&$options, &$nodes): void {
foreach (array_keys($options) as $key) {
switch ($key) {
case 'find':
if ($node->text() == $options[$key]) {
log_message("debug", sprintf("getNodeByMyCrawler-> %s:%s", $options["tag"], $options[$key]));
$nodes[] = $node;
}
break;
case 'except':
if ($node->text() != $options[$key]) {
log_message("debug", sprintf("getNodeByMyCrawler-> %s:%s", $options["tag"], $options[$key]));
$nodes[] = $node;
}
break;
default:
log_message("debug", sprintf("getNodeByMyCrawler-> %s", $options["tag"]));
$nodes[] = $node;
break;
}
}
}
);
return $nodes;
}
}