Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Рекурсия

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
EremiteWolf
Отправлено: 27 Января, 2019 - 13:54:51
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2019  


Помог: 0 раз(а)




помогите решить мою головную боль RTFM, мля! Бан! Разнесу! . Учусь писать парсеры на PHP в основе CURL 'для карьерного роста Радость' и у меня возникла проблема не могу собрать все ссылки с сайта что-бы в дальнейшем с них можно было выбрать нужную мне информацию.
Первую страничку и все ее ссылки я собираю успешно и через регулярку оставляю только нужные Урл, заношу их в массив и после хочу повторно переменной $url присвоить выбранный из массива первый url получаю или зацикливание или же ошибку.

    Ссылка удалена
    Ссылка удалена
    Ссылка удалена

    Warning: stristr() expects parameter 1 to be string, array given in C:\Server\data\htdocs\curl.php on line 98
    Ссылка удалена

    Notice: Array to string conversion in C:\Server\data\htdocs\curl.php on line 27
    cURL Error: Could not resolve host: Array
    Array ( [0] => https://www[dot]azet[dot]sk/katalog/kategorie/A/ )
    Notice: Undefined offset: 1 in C:\Server\data\htdocs\curl.php on line 98
    Ссылка удалена
    0 записал в Parserее.csv
    ссылок найдено0

    Notice: Array to string conversion in C:\Server\data\htdocs\curl.php on line 27
    cURL Error: Could not resolve host: Array
    Array ( [0] => https://www[dot]azet[dot]sk/katalog/kategorie/B/ )
    Notice: Undefined offset: 1 in C:\Server\data\htdocs\curl.php on line 98
    Ссылка удалена
    0 записал в Parserее.csv
    ссылок найдено0

    Notice: Array to string conversion in C:\Server\data\htdocs\curl.php on line 27
    cURL Error: Could not resolve host: Array
    Array ( [0] => https://www[dot]azet[dot]sk/katalog/kategorie/C/ )
    Notice: Undefined offset: 1 in C:\Server\data\htdocs\curl.php on line 98
    Ссылка удалена
    0 записал в Parserее.csv
    ссылок найдено0


Прошу ткнуть носом в мое Гов... потому как не могу сам его найти. Спасибо и не судите строго.
ЗЫ. в дальнейшем будет авторизация и запись куки через curl

первый файл conf - принимает параметры для парсера через веб-интерфейс
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $tmp=new AutoCurl;
  4.  
  5.     if (!empty(isset($_POST['urlkat']) and isset($_POST['cookiskat'])and isset($_POST['email'])and isset($_POST['wregular'])))
  6.    {
  7.  
  8.         //логин к сайту если имеется
  9.         $login = $_POST['login'];
  10.         $password = $_POST['password'];
  11.  
  12.         //куки с сайта и ссылка на то что парсим
  13.         $tmp->url=$_POST['urlkat'];
  14.         $tmp->cookie_file = $_POST['cookiskat'];
  15.         $tmp->AuthCurl();
  16.  
  17.         //отчет ошибки и тд тп
  18.         $email = $_POST['email'];
  19.  
  20.         //имя файла и путь выгрузки
  21.         $filename  = $_POST['filename'];
  22.         $dirfil = $_POST['directory'];
  23.  
  24.  
  25.         //регулярные выражения для поиcка по сайту urlов
  26.         $wreg=$_POST['wregular'];
  27.  
  28.     }
  29.  
  30.  
  31.  
  32. ?>
  33.  

как видно сам класс
PHP:
скопировать код в буфер обмена
  1. class AutoCurl
  2. {
  3.     private $login;
  4.     private $password;
  5.     private $curl;
  6.     public $cookie_file = 'cookie.txt';
  7.     public $url= Array();
  8.  
  9.     function __construct()
  10.     {
  11.         $this->login = $login ='log';
  12.         $this->password = $password='pass';
  13.         $this->curl=curl_init();
  14.     }
  15.     function AuthCurl(){
  16. //необходимо прикрутить авторизацию
  17.         curl_setopt($this->curl, CURLOPT_URL, $this->url);
  18.         curl_setopt($this->curl, CURLOPT_POST, true);
  19.         curl_setopt($this->curl, CURLOPT_HEADER, 0);
  20.         curl_setopt($this->curl, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  21. //        curl_setopt($this->curl, CURLOPT_COOKIEJAR, $this->cookie_file); // записываем файл с куками
  22.         curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 0);
  23.         curl_setopt($this->curl, CURLOPT_TIMEOUT, 10);
  24.         curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, 10);
  25.         curl_setopt($this->curl, CURLOPT_COOKIESESSION, true);
  26.         curl_setopt($this->curl, CURLOPT_COOKIEFILE, $this->cookie_file);
  27.         curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
  28.         curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false);
  29.         curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, false);
  30.         curl_setopt($this->curl, CURLOPT_MAXREDIRS, 10);
  31.  
  32.         //Выполняет запрос cURL
  33.         $site=curl_exec($this->curl);
  34.  
  35. //Отслеживание ошибок
  36.         $output = curl_exec($this->curl);
  37.         if ($output === FALSE) {
  38.             echo "cURL Error: " . curl_error($this->curl);
  39.         }
  40.  
  41.         print_r($this->url);
  42.         echo '<br>';
  43.  
  44. //вход - регуляркa, текст и пустой массив
  45.         $result= Array();
  46.         $counts=preg_match_all($_POST['wregular'], $site,$result, PREG_SET_ORDER);
  47.         if (isset($counts))
  48.         {
  49.             if(!is_array($result))
  50.                 return false;
  51.             else {
  52.                 array_push($result, $result);
  53.                 sortAr($result);
  54.                 echo 'ссылок найдено' . $counts . '<br>';
  55.             }
  56.         }
  57.     }
  58.     function __destruct()
  59.     {
  60.         curl_close($this->curl);
  61.         // TODO: Implement __destruct() method.
  62.     }
  63.  
  64. }


PHP:
скопировать код в буфер обмена
  1. //сортировка/удаление не нужных ссылок в массиве
  2. function sortAr($array){
  3.     if(!is_array($array))
  4.         return false;
  5.     $tmpArr = Array();
  6.     $col=count($array);
  7.     $tmpPat = mb_strtolower($_POST['urlkat']);   //'https://www.azet.sk/katalog/';
  8.     $newClass = new AutoCurl();
  9.  
  10.  
  11.     for ($i=0;$i!=$col;$i++){
  12.         $tmpVal=array_values(array_shift($array));
  13.  
  14.         $new=stristr($tmpVal[1], $tmpPat);
  15.         if (!empty($new)) {
  16.             $tmpArr[$i] = explode(",", $new);
  17.  
  18.        } else{
  19.             unset($tmpVal);
  20.             echo "Ссылка удалена <br>";
  21.         }
  22.     }
  23.     foreach ($tmpArr as $value) {
  24.         $newClass->url = $value;
  25. //если не вызываю метод то все происходит на ура, главную страницу собирает за доли сек и записывает данные в файл и массив
  26.         $newClass->AuthCurl();
  27.     }
  28.  //запись в файл
  29.    $col1=count($tmpArr);
  30.     SetFileCSV($tmpArr);
  31.     echo "$col1 записал в ".$_POST['filename'].'<br>';
  32. }
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB