sBogom
@sBogom
Начинающий web-дизайнер.

Почему происходит потеря пакетов при парсинге по ссылкам?

Написал миниатюрный код для парсинга "неких" значений с сайта. Собственно вот он:
<?php 
    $link  = explode("\n", file_get_contents('link.txt'));
    $proxy = explode("\n", file_get_contents('proxy.txt'));

    $str = [*массив регулярных выражений*];
   
    $i = 0; $range = [13, 30];

    function SetProxy($mas){
        $config = array(
            'http' => array(
                'timeout' => 1.5,
                'proxy' => trim($mas[rand(0, count($mas))]),
                'request_fulluri' => true,
            ),
        );

        return stream_context_create($config);
    }


    $crContext = SetProxy($proxy);

    for($set = $range[0]; $set < $range[1]; $set++){

        if ($set % 2 == 0){ ReSetProxy:$crContext = SetProxy($proxy); }

        if($get_page = @file_get_contents(trim($link[$set]), False, $crContext)){

            $encoding = iconv("cp1251", "UTF-8", $get_page);

            for($l=0; $l < count($str); $l++){
                preg_match_all('~'.$str[$l].'~si', $encoding, $result);
                if($result[1][0] != null) 
                    if(count($result[1]) < 2) $MoveList[$i][] = preg_replace('~(<br[^>]*>|&nbsp;)~is', ' ', $result[1][0]); else{
                         for($g=0; $g < count($result[1]); $g++)
                             if($result[1][$g] != null) $temp .= ' '.$result[1][$g];
                        $MoveList[$i][] = str_replace(' ', ', ', trim($temp)); 
                    }
                unset($temp);
            }

            if(isset($MoveList[$i])){ $i++ }else{ goto ReSetProxy; }
        
        }else{ goto ReSetProxy; } 
    }
    
   print_r($MoveList);
?>


По итогу, всё это дело возвращает только 12 значений, не более. Кто может сказать, почему так происходит и лечится ли это?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
Попробуйте через XPath.
Материал по теме: https://youtu.be/id_MNxmdRvk
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы