Парсинг сайтов. Парсинг закрытых страниц. Урок 6. Класс Parser

Парсинг сайтов

От автора: в этом уроке мы продолжим работать с темой парсинга сайтов и библиотекой cURL. Вместо простенькой функции, которую мы написали ранее, мы с вами напишем класс для парсинга, который будет куда универсальнее и гораздо больше подойдет для решения задач парсинга.

скачать исходники

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (12)

  1. Serik

    Здравствуйте )
    Хотел спросить а как парсить страницу если туда контент загружается Ajax’om ?

  2. Serik

    НАписал парсер но при парсинге возникает ошибка!
    Сайт донора выдает мне 503 Ошибку:
    Service Temporarily Unavailable
    You have made too many requests per second.

  3. Владимир

    Привет!!! Часто пользуюсь видеоуроками webformyself, и вот решил оставить комментарий по теме в которую погрузился на практике.
    Если открывать соединение для рекурсивного парсинга — не лучше ли создать сингтон для курлинит. Например так?

    class Parser{

    private static $ch = null;

    public static function getInstance() {
    if (self::$ch != null) {
    return self::$ch;
    }
    return new self;
    }

    private function __construct() {
    self::$ch = curl_init();
    curl_setopt(self::$ch, CURLOPT_RETURNTRANSFER, true);
    }

    public function set($name, $value) {
    curl_setopt(self::$ch, $name, $value);
    return $this;
    }

    public function exec($url) {
    curl_setopt(self::$ch, CURLOPT_URL, $url);
    return curl_exec(self::$ch);
    }

    public function __destruct() {
    curl_close(self::$ch);
    }

    }

    А потом в рекурсии вызывать $html = Parser::getinstans

    Если бы я точно был в этом уверен то не спрашивал бы, но я точно не знаю и хотел бы узнать Ваше мнение?

    • Андрей

      Здравствуйте, Владимир! Можно, конечно же :) Могу ошибаться, но мне кажется, что в уроке я что-то и говорил о синглтоне (хотя могу путать с каким-то другим уроком). Если бы серия продолжалась, тогда синглтон я бы, скорее всего, добавил.

  4. Владимир

    Спасибо за ответ.
    И еще, очень бы хотелось в разрезе этой темы узнать про более сложные алгоритмы парсинга. Дело в том что последнее время очень много сайтов используют подгрузку динамического контента без использования АЯКСА. И хоть фидлер никто не отменял, но иногда для вывода контента на одной страничке уходит так много запросов что работа курлами превращается сущий АД.

    На помощь конечно приходит Node.js и Nightmare (Electron), и в этой связке у меня легко получается автоматизировать автоматичесую авторизацию на таких ресурсах как mail.ru или яндекс для последующего парсинга или автоматической отправки писем. Кстати к слову недавно или маилру или рамблер начали блокировать такие алгоритмы но сейчас не про это.

    Я больше люблю php и мне бы хотелось увидеть пример связки -> php скрипт который запускает node.js файл -> node.js файл открывает страничку которую будем парсить с помощью Nightmare (делает там все необходимые действия, переходы и авторизации…) -> потом результат помещается в переменную и отправляется в первоначальный php скрипт где идет его обработка phpQuery и дальше отправляться в Mysql

    Сейчас мне приходиться это все делать по отдельности, а до совмещения этих действий в один алгоритм у меня руки не дошли.

    Понимаю, что это специфическая тема и скорее всего на это у Вас не будет времени. Но, возможно если бы я сделал такой алгоритм САМ и соответственно видеоуроки (2 — 3 урока), Вы бы их выложили на Вашем ресурсе?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree