42 lines
1.5 KiB
PHP
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;
|
|
}
|
|
}
|