Парсер сайта OLX [РЕШЕНО]

Здравствуйте.
Вот код парсинга для сайта OLX.
Надеюсь, кому-то пригодиться.

Дополнительно прошу помощи по эмуляции выполнения JS на спарсенной странице. Нужно открывать номера телефонов


function curl_get_contents($page_url) {
    $base_url = "http://google.com";
    $pause_time = 50;
	$retry = 0;
    
    $error_page = array();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0");   
    curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace("\\", "/", getcwd()).'/gearbest.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace("\\", "/", getcwd()).'/gearbest.txt'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_URL, $page_url);
    curl_setopt($ch, CURLOPT_REFERER, $base_url);
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response['html'] = curl_exec($ch);
    $info = curl_getinfo($ch);
    if($info['http_code'] != 200 && $info['http_code'] != 404) {
        $error_page[] = array(1, $page_url, $info['http_code']);
        if($retry) {
            sleep($pause_time);
            $response['html'] = curl_exec($ch);
            $info = curl_getinfo($ch);
            if($info['http_code'] != 200 && $info['http_code'] != 404)
                $error_page[] = array(2, $page_url, $info['http_code']);
        }
    }
    $response['code'] = $info['http_code'];
    $response['errors'] = $error_page;
    curl_close($ch);
	
	echo $response['html'];
}

14 комментариев

avatar
Помогите советом
avatar
Content Downloader
avatar
Хотелось бы решение на PHP.
С прогами не смогу возиться в силу знаний, точнее их отсутствие)))
avatar
file_get_contents + PHP Simple HTML DOM Parser
avatar
Если бы все так просто было.
Сайт защищен от такого парсинга.
Знаю, что сделать реально, но не хватает знаний — как)))
avatar
Можно сделать плагином для Хрома который встраивает и выполняет js-код на нужной странице. Немного неудобно в использовании, зато всегда рабочий вариант.
У меня сейчас есть в наличии такой плагин для автопостинга у ВК, могу поделиться, только разбираться что и как работает нужно будет самому.
avatar
Поделись. Буду благодарен. Но поиски по решению задачи на PHP CURl продолжаются)))
avatar
phantomjs.org
Комментарий отредактирован 2018-06-14 21:12:58 пользователем braunrb
avatar
на Хабре была статья про парсинг Авито, мне кажется, это ваш вариант.
avatar
Всем спасибо за отзывы, сделал.
Кому нужно обращайтесь, дам полный код))
avatar
Так Гитхаб наше все)
А еще лучше пост здесь, на MODX.im
Думаю, многим будет интересно
avatar
Кто-то может подсказать, как имитировать нажатие на кнопку, чтоб открылся номер на сайте OLX и потом уже спарсить страницу. Спарсить уже получается, вот только номер не могу открыть. На олх в исходном коде нигде не дублируется номер телефона, нужно имитировать клик
avatar
вам уже выше подсказали, нужно использовать например phantomjs
вот есть для php реализация — github.com/jonnnnyw/php-phantomjs
Комментарий отредактирован 2018-06-21 07:36:13 пользователем dzimon
avatar
Прошу помощи с фантомом. Не могу найти документацию хорошую.
У меня на сервере установлен фантом. Подскажите, как с помощью php с ним работать (без консоли)?
Возможно ли вообще такое?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.