Написал парсер, он берет из базы ФИО, заходит на один сайт и ищет ФИО ИПэшника
Вот код
$count_result = count($result);
for ($k=0;$k<$count_result;$k++) {
$name_IP = "ИП " . $result[$k]["ishodnye_nameORG"];
$chek_name = 1;
$links_IP_array = [];
//находим ссылки на нужных ИП в поиске сайтаfor ($i = 1; $i <= 20; $i++) {
$url = "https://site.ru/?query=" . urlencode($name_IP) . "&page=$i";
$refer = 'https://site.ru';
$pars = getPageByUrl($url, $refer);
$pq = phpQuery::newDocument($pars);
$links = $pq->find('.org')->find('a');
if (!empty($links)) {
$chek_name_in_array = false;
foreach ($links as $link) {
$pqLink = pq($link);
//принудительно перевожу ФИО в найденных ссылка в верхний регистр, удаляю пробелы, очищаю от мусора и заменяю пару букв ибо есть разные варианты написания
$ankor = trim(mb_strtoupper($pqLink->text()));
$ankor = str_replace('Ё', 'Е', $ankor);
$ankor = str_replace('Й', 'И', $ankor);
$ankor = str_replace(' ', '', $ankor);
$ankor = filter_var($ankor, FILTER_SANITIZE_STRING);
$href = $pqLink->attr('href');
//var_dump($href);//тоже самое делаю с ФИО из нашей базы
$str = trim(mb_strtoupper($result[$k]["ishodnye_nameORG"]));
$str = str_replace('Ё', 'Е', $str);
$str = str_replace('Й', 'И', $str);
$str = str_replace(' ', '', $str);
$str = filter_var($str, FILTER_SANITIZE_STRING);
//сравниваю, если есть совпадение кидаю ссылку в массивif (preg_match("~(.*)$str(.*)~m", $ankor, $match)) {
$links_IP_array[] = $href;
$chek_name_in_array = true;
}
}
//проверяем есть ли нужное на ФИО на страницеif ($chek_name_in_array) {
$chek_name++;
}
//если счетчик цикла больше $chek_name на 3 и более раз, значит уже три раза не найдено совпадение на странице, прерываем циклif ($i - $chek_name >= 3) {
echo "Поиск прерван на странице №" . $i . "rn";
break;
}
}
}
var_dump($links_IP_array);
В итоге каждый запуск на больших выборках (сотни) я каждый раз получаю разное кол-во записей и это мне не понятно.
Допустим в один заход по ипэшнику «Иванов Иван Иванович» парсер нашел 15 ссылок и загнал их в массив $links_IP_array, тут же повторяю прогон по этой же выборке — и ссылок уже 13.
Как так? В чем может быть косяк? Глюк плавающий, каждый раз разные ФИО не совпадают…. У меня уже нет мыслей…
Dram
Проблему вроде детектировал — страницы поиске на случайной итерации просто не загружались, вероятно сайт не справляется с такой скоростью. Поставлю слип в 1 сек.
Dram
Написал парсер, он берет из базы ФИО, заходит на один сайт и ищет ФИО ИПэшника
Вот код
В итоге каждый запуск на больших выборках (сотни) я каждый раз получаю разное кол-во записей и это мне не понятно.
Допустим в один заход по ипэшнику «Иванов Иван Иванович» парсер нашел 15 ссылок и загнал их в массив $links_IP_array, тут же повторяю прогон по этой же выборке — и ссылок уже 13.
Как так? В чем может быть косяк? Глюк плавающий, каждый раз разные ФИО не совпадают…. У меня уже нет мыслей…
Dram