Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Помогите связать php simple html dom parser с curl

Тема в разделе "Свободное общение", создана пользователем Bashmak, 18 май 2020.

18.05.20 в 13:06
18.05.20 в 13:56
3
534
0
  1. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    Написал простенький парсер изображений на основе PHP Simple HTML DOM Parser
    Парсер по url перекачивает картинки к себе на сервер. Но есть одно но, в документации написано:
    Там советуют использовать в связке с cURL.

    Вот мой код парсинга.

    PHP:
    <?php
    require_once 'simple_html_dom.php';

    // поисковый URL
    $url 'https://сайт.org/ссылка'
    $n 200;
    // загружаем данный URL
    $data file_get_html($url);
    // очищаем страницу от лишних данных
    foreach($data->find('script,link,comment') as $tmp)$tmp->outertext '';
    // находим все изображения на странице
    if(count($data->find('div#all img'))){
      
    $i 1;
      foreach(
    $data->find('div#all img') as $img){

      
    Ну и тут уже сам код парсинга.

        if(
    $i>$n)break; // выходим из цикла если скачали достаточно фотографий
      
    }
    }
    $data->clear();// подчищаем за собой
    unset($data);
    ?>
    Как к этому коду привязать cURL, т.е. чтобы в дальнейшем можно было использоваться $url и $data в PHP Simple HTML DOM Parser ?

    Код:
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://сайт.org/ссылка');
       curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
     curl_setopt($ch, CURLOPT_REFERER,'https://сайт.org');
    $url = curl_exec($curl);
    curl_close($curl);
    
     
    #1 Bashmak, 18 май 2020
    Последнее редактирование: 18 май 2020
  2. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Это и есть страница которую ты получаешь.
     
  3. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    А блин, это я эксперементировал пытаясь передать страницу в код PHP Simple HTML DOM Parser.
    В общем там вот эти 2 строки важны
    Код:
    $url = 'https://сайт.org/ссылка'
    $data = file_get_html($url);
    
    Я пробовал сделать так:

    Код:
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://сайт.org/ссылка');
       curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
     curl_setopt($ch, CURLOPT_REFERER,'https://сайт.org');
    $url = curl_exec($curl);
    curl_close($curl);
    
    require_once 'simple_html_dom.php';
    
    // Тут $url удалил так как выше в curl он уже есть.
    
    $n = 200;
    // загружаем данный URL
    $data = file_get_html($url);
    
    // И тут дальше остальной код.........
    
    Но с такой конструкцией происходит не парсинг, а просто открытие страницы указываемой в curl_setopt($curl, CURLOPT_URL
     
  4. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    Всё, проблему решил.
    У меня были ошибки в самом curl, вместо $ch забыл везде поменять на $curl
    И сам php код надо было поместить до curl_close($curl) и заменить вот так
    Код:
    $url = curl_exec($curl);
    $data= str_get_html($url);
    В общем вот так заработало:
    Код:
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://сайт.org/ссылка');
       curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17');
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
     curl_setopt($curl, CURLOPT_REFERER,'https://сайт.org');
    
    require_once 'simple_html_dom.php';
    
    // поисковый URL
    $url = curl_exec($curl);
    $n = 200;
    // загружаем данный URL
    $data= str_get_html($url);
    
    // И тут дальше остальной код.........
    
    curl_close($curl);
     
    • Нравится Нравится x 1
Яндекс.Метрика